Прежде всего это то, что я хочу сделать:
delegate IEnumerator EnemySpawningRoutine();
EnemySpawningRoutine[] enemySpawners = new EnemySpawningRoutine[] {
() => {
//variables
//spawn
yield return new WaitForSeconds(3f);
//complex stuff
//more spawning
},
() => {
//same as above
}
};
IEnumerator EnemySpawningRoutine() {
IEnumerator currentSpawnRoutine;
while(isGameRunning) {
currentSpawnRoutine = //choose one of enemySpawners
StartCoroutine(currentSpawnRoutine);
yield return new WaitUntil(() => {
//return true if all enemies are dead or something like that.
});
}
}
К сожалению, кажется, что это невозможно, потому что функция возврата возврата не поддерживается в делегатах или анонимных функциях.
Есть ли другой способ достичь того же эффекта, что и выше, без анонимных IEnumerators?