通过脚本获取游戏对象的孩子数量

Pey*_*ton -4 c# unity-game-engine

标题说明了一切:gameObject通过脚本找出有多少孩子的最佳方法是什么。

Pro*_*mer 5

编辑 1

一个简单的变量transform.hierarchyCount,已添加到Unity 5.4及更高版本。这应该简化这一点。

Unity 5.3 及以下版本的旧答案

transform.childCountAdrea提供的方法通常是这样做的,但它不会返回子项下的子项。它只返回直接在 GameObject 下的子项transform.childCount被调用。就是这样。

要返回所有子游戏对象,无论是在另一个孩子下的另一个孩子的孩子下,你必须做更多的工作。

下面的函数可以计算孩子:

public int getChildren(GameObject obj)
{
    int count = 0;

    for (int i = 0; i < obj.transform.childCount; i++)
    {
        count++;
        counter(obj.transform.GetChild(i).gameObject, ref count);
    }
    return count;
}

private void counter(GameObject currentObj, ref int count)
{
    for (int i = 0; i < currentObj.transform.childCount; i++)
    {
        count++;
        counter(currentObj.transform.GetChild(i).gameObject, ref count);
    }
}
Run Code Online (Sandbox Code Playgroud)

让我们说下面是您的层次结构的样子:

在此处输入图片说明

使用简单的测试脚本:

void Start()
{
    Debug.Log("Child Count: " + transform.childCount);
    int childs = getChildren(gameObject);
    Debug.Log("Child Count Custom: " + childs);
}
Run Code Online (Sandbox Code Playgroud)

这是transform.childCount和自定义函数之间的结果:

儿童人数:2

儿童计数自定义:9

因为,您可以看到transform.childCount将不会计算孩子的孩子,而只会计算转换的孩子。自定义函数能够计算所有子游戏对象。