【发布时间】:2017-09-15 21:08:28
【问题描述】:
我目前正在制作一款 RTS 风格的游戏。我制作了这个让敌人隐形的战争迷雾脚本:
void Update () {
foreach (GameObject enemy in enemies) {
if (enemy == null) {
enemies.Remove (enemy);
continue;
} else {
Visible = false;
foreach (GameObject vision in visions) {
if (vision == null) {
visions.Remove (vision);
continue;
} else {
Vector3 point = enemy.GetComponent<Collider> ().ClosestPoint (vision.transform.position);
float range = vision.GetComponent<FieldOfView> ().viewRadius;
float distance = Vector3.Distance (point, vision.transform.position);
if (distance <= range) {
Visible = true;
break;
}
}
}
MeshRenderer render = enemy.GetComponent<MeshRenderer> ();
if (Visible) {
if (!render.enabled) {
render.enabled = true;
}
} else if (!Visible) {
if (render.enabled) {
render.enabled = false;
}
}
}
}
}
}
每当敌人的游戏对象被摧毁时,我都会在标题中看到错误。我对编程还是很陌生,看不出是什么导致了这个问题。 我在其他有同样问题的线程上环顾四周,但我真的不知道如何解决它。 任何帮助表示赞赏。如果需要更多信息,请询问,我会尽力提供。
【问题讨论】:
-
在迭代列表时,您根本无法修改列表。这就是错误的状态。您可以将列表复制到一个临时列表中,对其进行迭代并修改原始列表。