私は現在RTSスタイルのゲームを作っています。私は目に見えないenimiesを作るための戦争スクリプトのこの霧を作った:コレクションが変更された列挙操作が実行されない可能性があります。 Unity
敵gamobjectが破壊されますたび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;
}
}
}
}
}
}
、私はタイトルにエラーが発生します。私はまだかなりプログラミングの新しいと問題を引き起こす可能性がある参照してください。 私は同じ問題を持って他のスレッドでちょっと見ていましたが、実際にそれを修正する方法はありません。 何か助けていただければ幸いです。それ以上の情報が必要な場合は、尋ねてみてください。
あなたは* iterating *している間は、単にリストを変更することはできません。それがエラーの内容です。あなたはリストを一時的なものにコピーし、それを反復してオリジナルを修正することができます。 – HimBromBeere