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;
        }
    }