I have a list of Transforms of enemies that a healer will heal. However, at times the player will kill and enemy and then I need to remove him from the list. I attempted the following approach:
if (canHeal && !playerWithinRange ) {
CheckDistance ();
if (enemyToHealDistance < distanceCanHeal) {
CheckNullList();
_healTarget = healGroup[Random.Range (0, healGroup.Count)];
goblinAlertEnemyHeal.enemyToHeal = _healTarget.gameObject;
StartCoroutine ("HealTiming");
}
else {
CheckNullList();
_healTarget = healGroup[Random.Range (0, healGroup.Count)];
goblinAlertEnemyHeal.enemyToHeal = _healTarget.gameObject;
_state = State.GotoEnemyToHeal;
}
}
}
int _listCntr;
void CheckNullList() {
_listCntr = 0;
foreach (Transform bob in healGroup) {
Debug.Log (bob.name);
if (bob != null)
return;
else {
healGroup.Remove (bob);
healGroup.RemoveAt (_listCntr);
}
}
}
I am thinking that when the player kills the enemy and destroys the object, that position in the list should be null. But, it doesn’t turn null and I’m getting the error :
“MissingReferenceException: The object of type ‘Transform’ has been destroyed but you are still trying to access it.” at
goblinAlertEnemyHeal.enemyToHeal = _healTarget.gameObject;
I have a few ideas that might take a while to get it working, but I thought this approach would be the easiest.
Does anyone know how I can turn that missing reference into something I can check for and remove from the list?
thanks