Синтаксис:
Используется csharp
[SerializeField]
[Header("Враги которые спауняться")]
private List<GameObject> agent = new List<GameObject>();
[SerializeField]
[Header("Время между появлением врагов")]
private float timeSpawn = 2;
[Header("Игра окончена")]
public bool GameIsOver = false;
private void Awake()
{
StartCoroutine(CreateAgent());
}
IEnumerator CreateAgent()
{
int CurrCountAgent = 0;
while (!GameIsOver)
{
yield return new WaitForSeconds(timeSpawn);
CurrCountAgent++;
Debug.Log("Прошли " + timeSpawn + " сек Это " + CurrCountAgent);
GameObject enemy = Instantiate(agent[Random.Range(0, agent.Count)], new Vector3(0,0,0), Quaternion.identity);
}
}
[Header("Враги которые спауняться")]
private List<GameObject> agent = new List<GameObject>();
[SerializeField]
[Header("Время между появлением врагов")]
private float timeSpawn = 2;
[Header("Игра окончена")]
public bool GameIsOver = false;
private void Awake()
{
StartCoroutine(CreateAgent());
}
IEnumerator CreateAgent()
{
int CurrCountAgent = 0;
while (!GameIsOver)
{
yield return new WaitForSeconds(timeSpawn);
CurrCountAgent++;
Debug.Log("Прошли " + timeSpawn + " сек Это " + CurrCountAgent);
GameObject enemy = Instantiate(agent[Random.Range(0, agent.Count)], new Vector3(0,0,0), Quaternion.identity);
}
}
В массив agent добавлено 4 GameOBject.
1 Спаунится нормально, а дальше получаю ошибку
ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
Причем по Debug.Log я вижу такую картину
Прошли 2 сек итерация 1 (Первый появился)
Прошли 2 сек итерация 1 (должна быть итерация 2)
Ошибка написанная выше
Прошли 2 сек итерация 2 (Появляется второй)
Прошли 2 сек итерация 1 (Почему 1? o0)
Ошибка написанная выше
Прошли 2 сек итерация 3 (Появляется третий)
Прошли 2 сек итерация 1 (Почему 1? Откуда берется этот возврат к 1 итерации? )
ну и т.д
Но самое забавное если я изменю строчку инстанса, чтоб создавался только последний GameObject из листа агентов, то ошибок нет
Синтаксис:
Используется csharp
GameObject enemy = Instantiate(agent[3], new Vector3(0,0,0), Quaternion.identity);
И обратно, если я поставлю любое число входящее в рендж листа, 0,1 или 2 возникает ошибка.
Что я делаю не так???