编辑 1:
一个简单的变量transform.hierarchyCount
,已添加到Unity 5.4及更高版本。这应该简化这一点。
Unity 5.3 及以下版本的旧答案:
transform.childCount
Adrea提供的方法通常是这样做的,但它不会返回子项下的子项。它只返回直接在 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
将不会计算孩子的孩子,而只会计算转换的孩子。自定义函数能够计算所有子游戏对象。