void SpawnEnemies() { float remainingDifficulty = difficulty; List <SpawnEntry> remainingSpawnEntries = new List <SpawnEntry>(); remainingSpawnEntries.AddRange(spawnEntries); do { int indexOfSpawnEntry = Random.Range(0, remainingSpawnEntries.Count); SpawnEntry spawnEntry = remainingSpawnEntries[indexOfSpawnEntry]; if (remainingDifficulty - spawnEntry.difficulty < 0) { remainingSpawnEntries.RemoveAt(indexOfSpawnEntry); } else { Enemy enemy = spawnEntry.Spawn(); if (enemy != null) { SpeederBot speederBot = enemy as SpeederBot; if (speederBot != null) { speederBot.Init(); } enemy.enabled = false; enemies.Add(enemy); } remainingDifficulty -= spawnEntry.difficulty; } } while (remainingSpawnEntries.Count > 0); }