Unity4.3 bug GetChild顺序错乱

时间:2023-03-09 08:22:41
Unity4.3 bug GetChild顺序错乱

历史原因,目前有个项目还在使用unity4.3版本,比较过不同Unity版本,发现unity4.3的 transform.GetChild 获取的child顺序并不是想要的。

测试代码

using UnityEngine;
using System.Collections; public class GetChildTest : MonoBehaviour { // Use this for initialization
void Start () {
var childCount = transform.childCount;
for (int idx = ; idx < childCount; idx++)
{
var child = transform.GetChild(idx);
if(child) Debug.Log(child.name);
}
}
}

解释:上面这段代码是测试根据索引获取到的child是否按名字顺序

注意:getChild()只能获取 active = true 的transform。

Unity4.3.4

Unity4.3 bug GetChild顺序错乱

Unity5.3.1

Unity4.3 bug GetChild顺序错乱

解决方法

在有bug的unity版本中,使用FindChild(xxx+index)保证按顺序获取到child

例如:

for(int idx = ; i< max; i++)
{
var child = xxTrans.FindChild("" + (idx + ));
}