2017-01-06 1 views
1

내가 사용하려고하면 :GameObject.SetActiveRecursively (true) 사용되지 않습니까?

GameObject.Find("teleportation").SetActiveRecursively(true); 

GameObject.SetActiveRecursively(bool) 사용되지 않습니다, 지금 아이들에 의해 상속되는 대신 GameObject.SetActive()을 사용하여 말한다.

내 hierachy에서 나는 객체가 활성화되어 있고 그의 아이가 비활성 상태입니다. 활성 객체에 GameObject.SetActive()을 사용하면 하위가 활성화되지 않습니다. 활성 객체에 GameObject.SetActiveRecursively()을 사용하면 하위가 활성화됩니다.

그래서 저는 아이들을 활동적으로 만들기 위해 뭔가 다른 것을 사용해야합니까? GameObject.SetActive()이 작동하지 않는 이유를 모르겠습니다.

+0

내가 말하는 문서에 표시되지 않습니다 그 성명서가 의미하는 바를 설명해 주시겠습니까? – Amy

+0

빠른 Google 검색에 따르면이 기능은 [한동안] (http://answers.unity3d.com/questions/353475/setactiverecursively-is-now-obsolete-in-unity-40.html) 현재 사용되지 않아 왔습니다. [documentation] (https://docs.unity3d.com/ScriptReference/GameObject.html)에 최신 버전이 전혀 존재하지 않습니다. – UnholySheep

+0

@Amy 저수준 코드를 볼 수 있습니다. 줄은 녹색 파도로 밑줄이 그어져 있습니다. . 저것은 그것의 가치 저하를 의미한다. –

답변

3

SetActiveRecursively 함수는 앞서 언급 한 것처럼 사용되지 않습니다. 이제 SetActive()을 사용해야합니다.

재귀와 SetActive()을 사용하여 의 기능을 복제 할 수 있습니다. 확장 메소드에 넣을 수도 있습니다.

public static class ExtentionMethod 
{ 
    public static void SetActiveRecursivelyExt(this GameObject obj, bool state) 
    { 
     obj.SetActive(state); 
     foreach (Transform child in obj.transform) 
     { 
      SetActiveRecursivelyExt(child.gameObject, state); 
     } 
    } 
} 

사용 ". GameObject.SetActive() ... 지금은 아이들이 상속"

GameObject obj = GameObject.Find("teleportation"); 
obj.SetActiveRecursivelyExt(true); 
+0

그래서 이미 존재하고 편리하게 작업을 처리 한 기능은 대체품을 제공하지 않고 사용되지 않습니다.!? 왜 그랬을까요? –

+0

@ThomasHilbert 그건 너에게 맞는거야. 대체는'GameObject.SetActive()'이지만 그 행동은 약간 다르다. – Programmer

관련 문제