2016-03-12 4 views
0

Я делаю простой сценарий появления. У меня проблема, потому что я хотел создать динамический массив, и я остановился.C#, Unity - List <> (Аргумент за пределами допустимого диапазона ...)

Проблема в том, у меня есть теперь эта ошибка:

ArgumentOutOfRangeException: Argument is out of range. Parameter name: index 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++; 
} 
+0

Если вы не называете «Добавить», «враг» является пустым списком и любой индекс находится вне диапазона. – crashmstr

ответ

2

Это потому, что ваш список пуст в данный момент и имеет enemy.length == 0, следовательно, индекс 0 вашей список не определен.

Чтобы динамически добавлять элементы в список вашего звонка enemy.Add(Instantiate(...))

+0

** Решение: ** Я изменяю это на enemy.Add (Instantiate (Resources.Load («Враги/Враг»), новый Vector3 (0, 3, 0), Quaternion.identity) как GameObject); Спасибо – Nephasia

1

вы не можете получить доступ к List с индексатор скобках [] перед тем данный показатель был инициализирован!

Чтобы добавить элемент в List вы должны использовать enemy.add(gameobject)

Смежные вопросы