//TODO: Change from dev button private void DisplayWaveStartButton() { if (GUI.Button(new Rect(Screen.width / 2 - 50, 5, 100, 30), "Start Wave")) { if (CheckWaveStart()) { OnStartWave?.Invoke(); } } }
IEnumerator LifeCycleWave() { Wave currentWave = _wavesList[currentWaveNum - 1]; CountUnits = currentWave.units.Count; if (OnStartWave != null) { OnStartWave.Invoke(currentWaveNum); } yield return(new WaitForSeconds(1)); //Поочереди спавним юнитов с неким интервалом for (int i = 0; i < currentWave.units.Count; i++) { _spawner.Spawn(currentWave.units[i]); yield return(new WaitForSeconds(delayBetweenSpawnUnits)); } //После спавна всех юнитов запускам цикл проверки //где каждую секунду будем проверять остались ли еще активные юниты на поле while (true) { yield return(new WaitForSeconds(1)); if (currentWave.units.All(x => x.activeSelf == false)) { if (OnFinishWave != null) { OnFinishWave.Invoke(currentWaveNum); } if (currentWaveNum < wavesCount) { currentWaveNum++; } else { GameOver(); //завершаем игру, если это была последняя волна } //если выживших не осталось переключаемся на следующую волну и завершаем корутину yield break; } } }