Анонимные сопрограммы - PullRequest
       20

Анонимные сопрограммы

0 голосов
/ 07 декабря 2018

Прежде всего это то, что я хочу сделать:

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?

...