Как заставить игровой объект удалить себя из списка? (Unity3d)

Хорошо, так что в основном у меня есть список, который отслеживает всех врагов на сцене. Я использую список в первую очередь, чтобы каждый враг мог проверять позиции других врагов, чтобы они не оказались в одном месте. Когда враг создается, он добавляется в список, но мне нужно, чтобы враг удалился после того, как был убит. Я попробовал то, что у меня есть в коде ниже, но он выдает ошибку (ArgumentOutOfRangeException: Аргумент вне диапазона).

void Start () 
{
    Manager.EnemyList.Add(this.gameObject);
    ListSpot = Manager.EnemyList.Count; 
}

//Kills the enemy
public void Kill()
{
    Manager.EnemyList.RemoveAt(ListSpot);
    Destroy(this.gameObject);
}

1 ответ

Решение

Используйте список из пространства имен System.Collections.Generic, тогда вы можете просто вызвать Add и Remove с экземпляром объекта. Он будет использовать хеш-функции экземпляра, чтобы делать свое дело.

List<GameObject> enemies = new List<GameObject>();
enemies.Add(enemy1);
enemies.Remove(enemy1);

Редактировать: ваше решение выдает исключение, потому что индекс начинается с 0, а счетчик всегда начинает отсчитываться с 1. Если вы добавляете первый элемент, его позиция равна 0, но счетчик равен 1.

Другие вопросы по тегам