获取所有孩子,Unity3d中的孩子

Muh*_*han 0 c# unity-game-engine

到目前为止,我已经尝试过这个来获取对象的所有子项,但它只带来两个子对象.不是孩子的全部孩子.我如何获得所有并循环获取特定的名称对象

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"))
    {               
    }
}
Run Code Online (Sandbox Code Playgroud)

Nes*_*raj 5

你必须使用递归:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

希望它能帮到你


Muh*_*han 5

如果您想获取父 GameObject 的每个孩子,那么这是最小且简单的代码片段。将此附加到父游戏对象。

        foreach (Transform g in transform.GetComponentsInChildren<Transform>())
        {
            Debug.Log(g.name);
        }
Run Code Online (Sandbox Code Playgroud)