历史原因,目前有个项目还在使用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 = 0; idx < childCount; idx++) { var child = transform.GetChild(idx); if(child) Debug.Log(child.name); } } }
解释:上面这段代码是测试根据索引获取到的child是否按名字顺序
注意:getChild()只能获取 active = true 的transform。
Unity4.3.4
Unity5.3.1
解决方法
在有bug的unity版本中,使用FindChild(xxx+index)保证按顺序获取到child
例如:
for(int idx = 0; i< max; i++) { var child = xxTrans.FindChild("" + (idx + 1)); }