private void InitWave(int index) { WaveData waveData = levelData.Waves[index]; List <Column> columns = new List <Column>(waveData.columns.Length); foreach (ColumnData columnData in waveData.columns) { Column column = new Column(columnData); foreach (EnemyData enemyData in columnData.enemies) { GameObject enemy = GetFromEnemyPool(enemyData.prefab); if (enemy != null) { enemy.transform.localPosition = enemyData.position; enemy.SetActive(true); enemy.SendMessage("OnInitWave", SendMessageOptions.DontRequireReceiver); column.AddEnemy(enemy); } else { Debug.LogWarning("Enemy not available: " + enemyData.prefab.name); } } columns.Add(column); } currentWave = new Wave(waveData, columns); waveController.StartWave(currentWave); }