创建子对象列表(将子对象转换为越界)

时间:2018-01-22 05:38:54

标签: c# unity3d

我有一个空的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)

1 个答案:

答案 0 :(得分:4)

改变这个:

currentPathNodes.Add(transform.GetChild(i));

到此:

currentPathNodes.Add(pathGO.transform.GetChild(i));

您正在添加包含脚本的游戏对象的子项,而不是pathGO子项。