2016-06-21 18 views
0

これまで、私はこのオブジェクトの子をすべて取得しようとしましたが、2つの子オブジェクトしか持ちません。子供のすべての子供ではありません。どのように私はUnity3dの子どもの子どもたちをすべて取得します

特定の名前のオブジェクトを取得して、すべてのループを得るのですか
Transform[] objChild = gameObject.transform.GetComponentsInChildren<Transform>(); 
for (var i = 0; i < objChild.Length; i++) 
{ 
    objWheel.Add(objChild[i].gameObject.transform.GetChild(i).gameObject); 
    objWheelAnimation.Add(objChild[i].gameObject.transform.GetChild(i).GetComponent<Animation>()); 
    if (objChild[i].gameObject.name.Contains("Wheel Rotation")) 
    {    
    } 
} 
+0

に役立ちますが、それは 'ゲームオブジェクトを鳴らしホープ.transform.GetComponentsInChildren (); 'は再帰的な方法ではありません。名前付きメソッドのコードを投稿できますか? – lokusking

+0

@ lokuskingその関数は、それぞれのゲームオブジェクトのすべての第1レベルの子を返す単一関数です。したがって、再帰的ではありません。 –

答えて

3

あなたは再帰を使用する必要があります。

using System.Collections.Generic; 

private List<GameObject> listOfChildren; 
private void GetChildRecursive(GameObject obj){ 
    if (null == obj) 
     return; 

    foreach (Transform child in obj.transform){ 
     if (null == child) 
      continue; 
     //child.gameobject contains the current child you can do whatever you want like add it to an array 
     listOfChildren.Add(child.gameObject); 
     GetChildRecursive(child.gameObject); 
    } 
} 

が、それはあなたが団結に精通していないイム

+0

なぜ 'System.Collections.Generic'を使用していますか? – matiaslauriti

+1

これにはList型が含まれていますが、子供の数がわかっている場合はGameObjectの単純な配列を作成できます。 – Nestoraj

関連する問題