I am currently making an RTS style game. I made this fog of war script for making enimies invisible:
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;
}
}
}
}
}
}
Whenever an enemy gamobject gets destroyed, I get the error in the title. I'm still pretty new at programming and dont see what could be causing the problem. I looked around myself for a bit on other threads with the same problem, but I dont really get how to fix it. Any help is appreciated. If any more information is needed, just ask and I will try and provide it.