我目前有一个非常奇怪的错误,我希望有人可以帮我解决。
所以,在一个游戏中,我正处于完成的过程中,我有一个经理只能在游戏结束时被禁用,此时,它应该会销毁它实例化的所有导弹。 (游戏不大,所以我不害怕实例化/破坏占用太多内存)
但是当代码运行时我的问题出现了。
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。 (可能是故障保险)
答案 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++)