得到最底层的孩子

时间:2014-10-29 04:12:54

标签: unity3d

据我所知,要获得最高的父母是transform.root。如果我想得到最底层的孩子并且条件是我不知道孩子的名字怎么样?我试过

for (int i=0; i<theParent.childCount; i++) 
{
 int bottommost=theParent.childCount-1;
 Debug.Log(theParent.GetChild(bottommost).name);
}

但这不是我期望的结果,我只是得到了第一个孩子,但我想要最底层的一个。我的意思是顺便提一下最基本的孩子。是否有任何提示,以获得最底层的孩子?谢谢

4 个答案:

答案 0 :(得分:5)

lastChild = transform.GetChild(transform.childCount - 1);

答案 1 :(得分:0)

首先,你需要定义什么是底层孩子,因为孩子的深度也取决于兄弟姐妹。

例如:

    • child_1
    • child_2
    • child_3

然后每个孩子都可以有自己的孩子

  • Child_1
    • Child_1A
    • Child_1B
  • Child_2
    • Child_2A
    • Child_2B
    • Child_2C
    • Child_2D
    • Child_2E

因此,在这种情况下,儿童的孩子处于同一水平。

也许你正在引用编辑器中看到的最底层? 在这种情况下,可以在nae中添加一些东西以便搜索它......

答案 2 :(得分:0)

在父变换下创建所有子项的列表。

List<GameObject> list = new List<GameObject>();

foreach(Transform t in transform)
{
   list.Add(t.gameObject);

   if(t.childCount > 0)
     foreach(Transform c in t)
       list.Add(c);
}

最后一个元素是最后一个孩子:

GameObject lastChild = list[list.Count-1];

答案 3 :(得分:0)

如果您想要子对象本身,而不仅仅是转换:

int lastChildIndex = parentObject.transform.childCount - 1;
lastChildObject = cardSlot.transform.GetChild(lastChildIndex).gameObject;