Найти в Дзене
Виталий Власов

Что такое корутины? Unity 2019

Доброго времени суток! Сегодня поговорим про то что такое корутины и как они работают.

Так же у нас есть сообщество в вк
https://vk.com/unitylibrary

Что я ожидаю, что вы знаете

Я не ожидаю от вас больших знаний, кроме двух вещей. Прежде всего, я ожидаю что вы имеете общее представление о языке программирования C #. Во-вторых, я ожидаю, что вы знаете, как ориентироваться в интерфейсе Unity.

ЧТО ТАКОЕ КОРУТИНЫ?

Сопрограмма - это процедура, которая выполняется. Вы создаете их, как любой другой метод, но у них есть некоторые полезные функции, которые отличают их от вашего стандартного метода.

Вы можете приостановить их выполнение. Это может быть в течение определенного периода времени, или когда определенное условие, булево, выполняется.

Вы можете использовать бесконечные циклы для создания повторяющихся процедур. Это похоже на метод обновления, но имеет преимущества в определенных сценариях (которые будут обсуждаться позже).

Они могут быть использованы для вещей, которые должны происходить время от времени или, даже, только один раз (открывая дверь, двигаясь к месту).

Я полагаю, если вы не привыкли к сопрограмм, что вы думаете, что все, что я выше изложенное можно сделать с помощью обновления. Вы были бы правы, думая об этом. Тем не менее, сопрограммы позволят нам делать определенные вещи в менее грязной и подверженной ошибкам способ вместо того, чтобы делать это в обновлении. Я покажу вам, что я имею в виду.

Создание сопрограммы (корутины)

Теперь вы должны иметь общее представление о том, что такое сопрограмма. Итак, наш следующий шаг будет увидеть, как вы на самом деле создаете сопрограмму в Unity.

Создание базовой сопрограммы потребует двух шагов. Во-первых, нам нужно создать метод как наша корутина. Во-вторых, нам нужно будет где-то начать.

-2

Что ж запустите его, используя метод запуска Unity. Давайте посмотрим на нашу первую корутину.

Я чувствую, что этот пример довольно легко понять, даже если вы не видели корутину

Прежде чем продолжить давайте разберёмся что происходит в нашей корутине.

  • Мы используем встроенный метод запуска Unity, чтобы наша сопрограмма запускалась при запуске сцены.
  • StartCoroutine должен использоваться, если вы хотите запустить сопрограмму. Если вы забудете сделать это, сопрограмма не будет работать.
  • StarCoroutine принимает IEnumerator в качестве параметра. Это требование выполнено по нашему методу под названием Пример.
  • Примером является то, где мы определяем, что мы хотим, чтобы произошло. Обратите внимание, что это IEnumerator. Это требуется при создании сопрограммы, а метод должен быть IEnumerator или он не будет работать.
  • В нашем примере метода вы увидите, что мы просто ждем одну секунду.
  • Это делается с помощью новой строки yield-return WaitForSeconds (1f).
  • Подождав одну секунду, мы отладим нашу строку, написанную выше

Yield

Давайте поговорим о ключевом слове yield. Это ключевое слово на самом деле довольно очевидно. В целях Unity вы можете думать о выходе как о простом ожидании количества времени. В нашем примере это одна секунда, но есть несколько других классов, которые могут быть используемый.

WaitForSeconds (float) - Пауза на указанное время.

WaitForEndOfFrame () - Пауза до конца кадра.

WaitForFixedUpdate - Пауза до следующего фиксированного кадра.

null - не ждет. Я покажу вам, как это полезно в третьей главе.

break - это выйдет из раннего. Это похоже на использование break в цикле.

Имейте в виду, что для первых трех примеров это классы, а не методы. Вот почему нужно использовать новое ключевое слово, возвращать new WaitforSeconds (1f). Не забудьте сделать это или вы получите ошибку.

Следующая вещь, которую нужно выучить, это как остановить корутину. Остановка сопрограммы(корутины) в основном означает выйти из этого рано. Это не то, что нужно постоянно, но это полезно знать для времен, которые требуют такой вещи.

Есть два способа, которые я предлагаю вам использовать, когда вам нужно остановить сопрограмму.

StopAllCoroutines () Этот метод остановит все сопрограммы, которые MonoBehaviour работает (у вас может быть скрипт, запускающий несколько сопрограмм(корутины) на в то же время). Полезно, если вам нужно убедиться, что все было остановлено.

StopCoroutine (IEnumerator) Этот метод возьмет определенную сопрограмму и остановит

Это. Это полезно, когда вам нужно просто остановить одну сопрограмму в MonoBehaviour.

Это все, что нужно

На самом базовом уровне это все, что нужно для создания сопрограммы. Тот, который мы только что сделали очень просто, но понимание того, что происходит, поможет вам создавать более интересные и полезные сопрограммы(корутины). Конечно, мы также будем углубляться в сопрограммы, но убедитесь, что вы понимаете этот пример, прежде чем двигаться дальше.

Ставь лайк, и скоро будет ещё более подробная статься про корутины.

Что-то пошло не так, и нам не удалось загрузить комментарии. Попробуйте ещё раз
Документы, вакансии и контакты