Отличие корутинных методов от обычных
Предположим, что у нас существует объект с таким кодом:
[VarwinComponent(English: "Tutorial Object", Russian:"Учебный объект")] public class TutorialObject : VarwinObject { [Action(English:"action 1", Russian:"действие 1")] public void Action1() { Debug.Log("Message 1"); } [Action(English: "action 2", Russian: "действие 2")] public void Action2() { while (true) { // Пример бесконечного цикла } Debug.Log("Message 2"); } [Action(English: "action 3", Russian: "действие 3")] public void Action3() { Debug.Log("Message 3"); } }
И мы вызываем все три действия последовательно в самом начале программы:
В коде блока “действие 2” существует бесконечный цикл. Поскольку исполнение обычных методов происходит последовательно и непрерывно, выполнение программы полностью “зависнет” в этом бесконечном цикле вплоть до закрытия программы
При этом, предположим, что у нас существует необходимость в создании цикла, который будет вызываться, например, один раз за кадр, а затем дожидаться следующего кадра
Система корутин позволяет создать блок, который, будет выполнятся некоторое количество времени, при этом не блокируя выполнение остальной части приложения