如何让游戏对象从列表中删除自己?(Unity3d)

Asi*_*Jin 1 c# list unity-game-engine gameobject

好的,所以基本上我有一个列表来跟踪场景中的所有敌人。我主要使用这个列表,这样我就可以让每个敌人检查其他敌人的位置,这样他们就不会出现在同一个地方。每当创建敌人时,它都会将自己添加到列表中,但是我需要敌人在被杀死后将自己移除。我尝试了下面代码中的内容,但它抛出了一个错误(ArgumentOutOfRangeException:Argument is out of range)。

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

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

Ven*_*oth 5

使用System.Collections.Generic命名空间中的列表,然后您可以使用对象的实例调用 Add 和 Remove。它将使用实例的哈希函数来完成它的工作。

List<GameObject> enemies = new List<GameObject>();
enemies.Add(enemy1);
enemies.Remove(enemy1);
Run Code Online (Sandbox Code Playgroud)

编辑:您的解决方案抛出异常,因为索引从 0 开始,计数将始终从 1 开始计数。如果添加第一个元素,其位置为 0,但计数为 1。