标题说明了一切:通过脚本找出gameObject
有多少孩子的最佳方法是什么。
答案 0 :(得分:4)
编辑1 :
简单变量transform.hierarchyCount
已添加到 Unity 5.4 及更高版本中。这应该简化这一点。
Unity 5.3及以下的旧答案:
由Adrea提供的 transform.childCount
通常是这样做的方式,但它并不会让孩子回到孩子身边。它只返回一个直接在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);
}
}
让我们在下面说出您的层次结构:
使用简单的测试脚本:
void Start()
{
Debug.Log("Child Count: " + transform.childCount);
int childs = getChildren(gameObject);
Debug.Log("Child Count Custom: " + childs);
}
这是transform.childCount
与自定义函数之间的结果:
儿童人数:2
儿童数量自定义:9
正如您所看到的,transform.childCount
不会计算孩子的孩子,而只计算变换的孩子。自定义函数能够计算所有子GameObjects。
答案 1 :(得分:2)
您可以访问其转化并使用transform.childCount。
更新:此方法适用于检索第一级的所有子项。如果要检索整个层次结构中的子项(也在更深层次),请按照程序员的回答。