- Home /
Removing from a list
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
Answer by Spinnernicholas · Dec 03, 2013 at 10:04 PM
You need to remove the goblin from the list before you destroy the GamObject in order to prevent problems.
Is it an Array or a List?
For an array, manually set the position in the list to null.
For a List, call List.Remove(objectToRemove);
Yeah. I was thinking that. It's a list as the title suggests. Had to try a different approach. Thanks for the response.
I did figure it out. Just had to do the long way.
Your answer
Follow this Question
Related Questions
A node in a childnode? 1 Answer
How to remove project from the Project Wizard 6 Answers
List That Won't Remove The Last Two Elements 3 Answers