Завершите сопрограмму, если выполняется одно из двух условий - PullRequest
0 голосов
/ 27 июня 2018

Я не совсем понимаю сопрограммы.

Если у меня есть сопрограмма, которая делает что-то в каждом кадре, как мне закончить это циклическое поведение, если любое из двух условий становится истинным?

И когда я говорю «конец», я также имею в виду уничтожить, а не переводить в состояние удержания или другое приостановленное или незавершенное состояние, поэтому я могу перезапустить сопрограмму, если другое условие становится истинным.

1 Ответ

0 голосов
/ 27 июня 2018

Если условия существуют вне сопрограммы, вы используете StopCoroutine:

var coroutine = StartCoroutine(MyRoutine());
...
if (conditionA || conditionB) {
    StopCoroutine(coroutine);
}

Если в сопрограмме существуют условия, вы просто yield break:

IEnumerator MyRoutine() {
    while (true) {
        if (conditionA || conditionB) {
            yield break; // stop stepping this
        }
        yield return null; // continue stepping next frame
    }
}
...