2017-01-06 4 views
1

は、私が使用しようとすると:GameObject.SetActiveRecursively(true)が廃止されましたか?

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

GameObject.SetActiveRecursively(bool)廃止され、それが今の子供たちに継承されている代わりにGameObject.SetActive()を使用することを言います。

私の階層では、オブジェクトがアクティブで、彼の子供がアクティブではありません。 アクティブオブジェクト上でGameObject.SetActive()を使用すると、その子はアクティブ化されません。 アクティブオブジェクトでGameObject.SetActiveRecursively()を使用すると、その子がアクティブになります。

だから、私はアクティブな子供を作るために何か別のものを使うべきですか? なぜGameObject.SetActive()が機能しないのか分かりません。

+0

私はそれが言う文書に表示されていない "GameObject.SetActive()...が、今の子供たちに継承されます。"その声明が意味することを説明できますか? – 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 obj = GameObject.Find("teleportation"); 
obj.SetActiveRecursivelyExt(true); 
+0

すでに存在していて便利に仕事をしていた機能は、代替品を提供することなく廃止されました。それはなぜでしょうか? –

+0

@ThomasHilbertそれはあなたのためのUnityです。置き換えは 'GameObject.SetActive()'ですが、その動作は若干異なります。 – Programmer

関連する問題