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

时间:2014-07-26 20:51:14

标签: c# list unity3d gameobject

好的,基本上我有一个列表可以跟踪场景中的所有敌人。我主要使用这个列表所以我可以让每个敌人检查其他敌人的位置,这样他们就不会在同一个地方结束。当敌人被创造时,它会将自己添加到一个列表中,但是一旦它被杀死,我需要敌人将其自身移除。我在下面的代码中尝试了我所拥有的但是它抛出了一个错误(ArgumentOutOfRangeException:Argument超出范围)。

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 个答案:

答案 0 :(得分:4)

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

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

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