Создание корутинного блока
Для того чтобы сделать метод корутинным, нужно соблюсти два условия:
- Метод должен возвращать значение
IEnumerator
- В методе должна использоваться хотя бы одна
yield
инструкция
Изменим код метода старта таймера так, чтобы блок действия стал корутинным
C#
В коде описанном выше будет следующий порядок выполнения кода:
- Создание переменной
seconds int seconds = 0;
- Запуск бесконечного цикла
while (true)
- Прерывание метода (инструкция
yield
), программа выполняет какой-то другой код. Ожидание в течение 1 секундыyield return new WaitForSeconds(1);
- Увеличение значения переменной seconds на 1
seconds++;
- Вывод в консоль значения переменной seconds
Debug.Log(seconds);
- Переход к пункту 3
Подробнее про yield в разделе Использование инструкций yield
После изменения кода и повторной сборки объекта, блок действия внешне будет выглядеть также, как обычные синхронные блоки действия
Тем не менее, если сейчас запустить проект, он не зависнет, и в консоль будет выведено количество секунд. При этом приложение продолжит работу

Запуск корутинных методов
Для того чтобы запустить корутинный метод, необходимо использовать команду StartCoroutine(IEnumerator method)
C#