🪄Управление корутинами

Автор: Дмитрий Прокопьев

Как запустить корутину?

Для этого в классе MonoBehaviour есть метод StartCoroutine, он принимает в себя IEnumerator - результат вызова метода корутины:

Coroutine coroutine = StartCoroutine(DoSomething());

Как сохранить корутину?

Сохранять корутину нужно не всегда, иногда мы можем запустить ее и забыть про нее. Но если мы хотим дальше ее контролировать, то ее будет удобно сохранить в поле:

private Coroutine _coroutine;

private void Start()
{
    _coroutine = StartCoroutine(DoSomething());
}

Как остановить корутину?

Для остановки в классе MonoBehaviour есть метод StopCoroutine:

StopCoroutine(_coroutine);

В качестве параметра он принимает в себя экземпляр класса Coroutine - ту корутину, которую мы хотим остановить. Для этого мы обычно корутины и сохраняем.

Важно. До первой инициализации поле с корутиной будет равно null. Важно предусмотреть это:

А так можно остановить все корутины на объекте:

Важно. Мы используем метод StopAllCoroutines() только когда хотим остановить все без исключения корутины компонента. Такие сценарии крайне редкие, поэтому и метод мы применяем редко.

Полноценный пример управления корутиной

Last updated

Was this helpful?