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

Unity3D Корутины VS updates

Оглавление

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

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

Когда использовать обновление (Method Update)

Обновление поможет вам лучше, когда вы делаете что-то, что требует ввода (например, нужно повторять вечно (например, рыться между двумя цветами).
Теперь обновление будет менее полезным, когда вы делаете что-то, что меняет состояние на это свое собственное (например: прыгать, двигаться, останавливаться и т.д). Причиной этого является то, что вам понадобятся дополнительные поля для отслеживания состояния, а затем вы должны изменить способ запуска. Это может раздражать, а также приводить к ошибкам из-за способа изменения полей.

Когда использовать корутины?

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

Пример 1
Пример 1
Как использовать корутины, на большое кол-во Light будет не большая нагрузка на их отключение.
Как использовать корутины, на большое кол-во Light будет не большая нагрузка на их отключение.
-4

Большую часть этого должно быть легко понять, потому что это просто стандартные вещи Unity. я бы хотел сосредоточиться на нескольких вещах здесь, хотя я чувствую, что это важно понять. Сначала я хочу, чтобы вы увидели, что у нас есть логическое значение _moved. Мы просто установили это истина, когда запускается наша корутина, чтобы игрок не мог входить и выходить из области триггера запускать корутину более одного раза. Об этом важно помнить. Ты можешь запускайте сопрограмму более одного раза, поэтому не допускайте, чтобы это происходило при необходимости. Во-вторых, мы не использовали WaitForSeconds в этом примере. Здесь мы не использовать его, потому что наш _mover двигаться без пауз, пока не достигнет своей цели. Для этого мы используем yield return null. Вы используете yield return null каждый раз, когда у вас есть раздел в корутине, что вам не нужно делать паузу. В-третьих, мы используем цикл while с условием. Что мы говорим здесь в том, что _mover не находится в _target для него, чтобы продолжать двигаться. Как только _mover достаточно близко, корутина закончится. Вы можете видеть, что мы перемещаем _mover с методом Vector3.MoveTowards

Ну вроде бы всё...