Как заставить игровой объект удалить себя из списка? (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.