Я понимаю, что это обычно означает, что где-то существует бесконечный l oop, однако я сузил его до этого IEnumerator, поскольку, когда я его удаляю, он работает нормально, но порождает всех врагов одновременно. Идея состоит в том, что он определяет, сколько врагов требуется для этой волны, а затем порождает 1 врага за 0,5 секунды на единицу достигнутого количества, а не порождает всех врагов для волны сразу.
Метод обновления:
void Update()
{
Enemies = GameObject.FindGameObjectsWithTag("EndlessKnife");
NoOfEnemies = 0;
foreach (GameObject Enemy in Enemies)
{
NoOfEnemies++;
}
if (NoOfEnemies == 0)
{
waveNumber++;
StartingAmount = Mathf.RoundToInt(waveNumber + (Mathf.Pow(1.2f, waveNumber)));
for (int i = 0; i < StartingAmount;)
{
if (Limit == false)
{
SpawnEnemy();
i++;
Limit = true;
StartCoroutine(GradualSpawn());
}
}
}
}
IEnumerator:
IEnumerator GradualSpawn()
{
yield return new WaitForSeconds(0.5f);
Limit = false;
}
Я использую эту же логику c для ограничения скорострельности своего оружия, поэтому не понимаю, почему оно падает здесь, любой ввод полезен: D