1

好的,所以基本上我有一个列表,可以跟踪场景中的所有敌人。我主要使用列表,所以我可以让每个敌人检查其他敌人的位置,这样他们就不会出现在同一个地方。每当创建敌人时,它都会将自己添加到列表中,但是我需要敌人在被杀死后将其删除。我尝试了下面代码中的内容,但它引发了一个错误(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);
}
4

1 回答 1

5

使用System.Collections.Generic命名空间中的列表,然后您可以使用对象实例调用 Add 和 Remove。它将使用实例的散列函数来做它的事情。

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

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

于 2014-07-26T20:55:40.623 回答