我有一个空的gameObject 路径,它有10个子对象(节点),敌人会跟随它们。在我的敌人gameObjects的Start方法中,我想循环遍历它们,创建一个List,我稍后可以用它来查找最近的路径节点。
然而,当我使用这段代码时,我在向它添加三个对象后得到转换子界限异常。我在这里做错了什么?
顺便说一下,制作这个列表是否有任何意义,或者当我稍后使用我的GetClosestObject方法(使用gameObjects列表作为参数)时,我是否应该遍历实际的gameObjects?
private List<Transform> currentPathNodes = new List<Transform>();
void Start () {
pathGO = GameObject.Find("Path");
int childCount = pathGO.transform.childCount;
for (int i = 0; i < childCount; i++) {
print("Adding " + i + " of " + childCount);
currentPathNodes.Add(transform.GetChild(i));
}
}
错误输出:
Adding 0 of 10
Adding 1 of 10
Adding 2 of 10
UnityException: Transform child out of bounds (Refering to currentPathNodes.Add)
答案 0 :(得分:4)
改变这个:
currentPathNodes.Add(transform.GetChild(i));
到此:
currentPathNodes.Add(pathGO.transform.GetChild(i));
您正在添加包含脚本的游戏对象的子项,而不是pathGO子项。