IEnumerator SpawnEnemyRoutine() { if (_waveNumber <= waves.Length) { _uiManager.WaveText(_waveNumber); _uiManager.displayWaveNumber = true; yield return(new WaitForSeconds(2f)); _uiManager.displayWaveNumber = false; yield return(new WaitForSeconds(1f)); for (int i = 0; i < waves[_waveNumber - 1].enemyCount; i++) { if (_stopSpawning == false && waves[_waveNumber - 1].bossWave == false) { int randomEnemy = Random.Range(0, waves[_waveNumber - 1].enemies.Length); Vector3 posToSpawn = new Vector3(Random.Range(-8f, 8f), 7, 0); GameObject newEnemy = Instantiate(waves[_waveNumber - 1].enemies[randomEnemy], posToSpawn, Quaternion.identity); newEnemy.transform.parent = _enemyContainer.transform; _enemyAlive++; yield return(new WaitForSeconds(waves[_waveNumber - 1].enemySpawnTime)); } else if (_stopSpawning == false && waves[_waveNumber - 1].bossWave == true) { GameObject newEnemy = Instantiate(waves[_waveNumber - 1].enemies[0]); newEnemy.transform.parent = _enemyContainer.transform; _enemyAlive++; yield return(new WaitForSeconds(waves[_waveNumber - 1].enemySpawnTime)); } } while (_enemyAlive != 0) { yield return(new WaitForSeconds(1f)); } WaveSpawner(); } else { _uiManager.GameWonSequence(); _stopSpawning = true; } }