C#,Unity - 列出<> (参数超出范围......)

时间:2016-03-12 12:52:58

标签: c# unity3d

我正在制作一个简单的spawn脚本。我有问题,因为我想制作动态数组,我就停止了。

问题是我现在有这个错误:

  

ArgumentOutOfRangeException:参数超出范围。参数名称:   指数   System.Collections.Generic.List`1 [UnityEngine.GameObject] .CheckIndex(Int32 index)...

代码:

public float spawnTime = 5f;
public float spawnDelay = 1f;      
public int enemyID = 0;

public List<GameObject> enemy = new List<GameObject>();

// Use this for initialization
void Start() {
    InvokeRepeating("Spawn", spawnDelay, spawnTime);
}

void Spawn ()
{
    Debug.Log (enemyID);
    enemy[enemyID] = Instantiate (Resources.Load ("Enemies/Enemy"), new Vector3 (0, 3, 0), Quaternion.identity) as GameObject; // this is a problematic line, exactly this -> enemy[enemyID]
    enemyID++;
}

2 个答案:

答案 0 :(得分:2)

这是因为您的列表目前为空且有enemy.length == 0,因此未定义列表的索引0。

要动态地将项目添加到列表调用enemy.Add(Instantiate(...))

答案 1 :(得分:1)

在初始化给定索引之前,您无法使用索引器括号List访问[]

要向List添加元素,您必须使用enemy.add(gameobject)