在数组

时间:2016-02-23 17:34:58

标签: c# unity3d

我目前有一个非常奇怪的错误,我希望有人可以帮我解决。

所以,在一个游戏中,我正处于完成的过程中,我有一个经理只能在游戏结束时被禁用,此时,它应该会销毁它实例化的所有导弹。 (游戏不大,所以我不害怕实例化/破坏占用太多内存)

但是当代码运行时我的问题出现了。

public void OnDisable(){
    GameObject[] temp = GameObject.FindGameObjectsWithTag("MC_Missile");
    Debug.Log (temp.Length);
    for(int i = 0; i > temp.Length; i++){
        Destroy (temp[i]); 

    }
}

当达到Debug时,它返回正确数量的元素。但是,没有任何元素从我的场景中删除。我试过temp [i] .gameObject但它仍然不起作用。我也尝试在发生运行时错误的情况下重新加载Unity,但没有结果。

所以我坚持这个。 (如果可以帮助的话,我在Unity 5.0.0f4上)

编辑:DestroyImmediate也不起作用。我将尝试使用List查看数组是否正在搞乱Destroy。 (可能是故障保险)

3 个答案:

答案 0 :(得分:3)

您的for循环无效,请尝试将greater than更改为less than

for(int i = 0; i < temp.Length; i++)
                ^^^^
{
    Destroy (temp[i]); 
}

答案 1 :(得分:0)

尝试

Destroy(temp[i].gameObject);

答案 2 :(得分:0)

你的for循环条件是:

for(int i = 0; i > temp.Length; i++) // i is 0 so the loop will not run

尝试:

for(int i = 0; i < temp.Length; i++)