Unity 6.3
0 онлайн 20 гостей 3 в системе
Вход

Функции событий

Функции событий представляют собой набор предопределенных обратных вызовов, которые могут потенциально получать все компоненты скрипта MonoBehaviour. Возвратные вызовы вызывают различные события Unity Editor и Engine, включая:

Реализуйте соответствующую подпись метода в вашем MonoBehaviour-производный класс, чтобы ваши игровые объекты могли реагировать на события источника.

Для полного списка доступных обратных вызовов, обратитесь к MonoBehaviour API ссылке, где они перечислены в Сообщения. Остальная часть этого раздела дает обзор некоторых ключевых групп функций событий.

Регулярные обновления

Игра непрерывно отрисовывает последовательность кадров. Ключевая идея в программировании игр — менять положение, состояние и поведение объектов непосредственно перед отрисовкой каждого кадра. Функция Update является основным местом для такого рода кода в Unity. Update вызывается перед рендерингом кадра, а также перед вычислением анимаций.

Система физики также обновляется в дискретных шагах времени, аналогично рендерингу кадров. Отдельная функция событий, называемая FixedUpdate, вызывается перед каждым обновлением физики. Поскольку обновления физики и обновления кадров не происходят с одинаковой частотой, вы можете получить более точные результаты из физического кода, если вы поместите его в функцию FixedUpdate, а не Update.

Также иногда полезно вносить дополнительные изменения после того, как функции Update и FixedUpdate были вызваны для всех объектов в сцене, и после того, как все анимации были рассчитаны. Некоторые примеры этого сценария:

  • Когда камера должна оставаться ориентированной на целевой объект. Регулировка ориентации камеры должна быть произведена после того, как целевой объект перемещается.
  • Когда код скрипта должен переопределить результат анимации. Например, чтобы голова персонажа поворачивалась к целевому объекту в сцене.

Функция LateUpdate может быть использована для таких ситуаций.

Обзор того, как обновления кадра и физики вписываются в общую последовательность обновления функции события, см. в Порядок выполнения функции события.

События инициализации

Часто полезно иметь возможность вызвать код инициализации до любого обновления, которое происходит во время игры. Функция Start вызвана перед первым кадром или обновлением физики объекта. Функция Awake вызвана для каждого объекта в сцене в момент загрузки сцены. Обратите внимание, что, хотя функции Start и Awake различных объектов вызываются в произвольном порядке, все экземпляры Awake будут закончены до вызова первого Start. Это означает, что код в функции Start может использовать другие инициализации, ранее выполненные в фазе Awake.

Обзор того, как функции инициализации вписываются в общую последовательность обновления функции события, см. в Порядок выполнения функции события.

GUI события

Для проектов, которые используют устаревшую систему IMGUI UI, обратный вызов MonoBehavior.OnGUI периодически вызывается для рисования и управления элементами UI.

Примечание: Добавление обратного вызова OnGUI, даже если он пуст, к любому объекту в сцене также добавляет обработку IMGUI к процессу обработки кадров, что создает дополнительную нагрузку. Используйте OnGUI только если ваш проект использует систему IMGUI UI, которая больше не рекомендуется.

Для получения дополнительной информации, см. UI системы.

Вводные события

MonoBehaviour класс имеет также набор функций событий, имена которых начинаются с префикса OnMouse (e.g., OnMouseOver, OnMouseDown) для реагирования на действия пользователя с помощью мыши. Эти обратные вызова поддерживаются только для проектов, использующих устаревшую Менеджер ввода, которое более не рекомендуется.

Дополнительные сведения см. в Ввод.

События в физике

Система физики сообщает о столкновениях с объектом, вызывая функции событий на компоненте скрипта этого объекта.

Функции OnCollisionEnter, OnCollisionStay и OnCollisionExit вызываются при установлении, удержании и разрыве контакта. Соответствующие функции OnTriggerEnter, OnTriggerStay и OnTriggerExit вызываются, когда коллайдер объекта настроен как коллайдер триггеров.

Более подробную информацию о функциях физических событий см. в Collider взаимодействия.

Дополнительные ресурсы