Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

ExecuteAlways

класс в UnityEngine / Реализовано в: UnityEngine.CoreModule

Описание

Заставляет экземпляры скрипта всегда выполняться как в режиме воспроизведения, так и при редактировании.

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

Атрибут [ExecuteAlways] можно использовать, если вы хотите, чтобы ваш скрипт выполнял определенные действия как часть инструментов редактора, что не обязательно связано с логикой воспроизведения, которая происходит в проигрывателях buildt и в режиме воспроизведения. Иногда функциональность воспроизведения такого скрипта идентична его функциональности режима редактирования, а иногда они сильно отличаются.

MonoBehaviour, использующий этот атрибут, должен гарантировать, что они не запускают логику воспроизведения, которая неправильно изменяет объект в режиме редактирования или если объект не является частью игрового мира. Это можно сделать с помощью Application.IsPlaying, в котором скрипт может передать свой собственный GameObject, чтобы проверить, является ли он частью игрового мира.

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

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

Для объекта, который не является частью игрового мира, функции не вызываются постоянно, как в противном случае.

  • Update вызывается только тогда, когда что-то изменилось в сцене.
  • OnGUI вызывается, когда представление Game получает не предназначенное только для редактора Event, которое оно не использует ( например, EventType.ScrollWheel) и не перенаправляется в систему сочетаний клавиш редактора (например, EventType.KeyDown). , EventType.KeyUp). События, пересылаемые в представление игры, ставятся в очередь, и их немедленная обработка не гарантируется.
  • OnRenderObject и другие функции обратного вызова рендеринга вызываются при каждой перерисовке представления "Сцена" или "Игра".

Смотрите так же: Application.IsPlaying, runInEditMode, EditorApplication.QueuePlayerLoopUpdate.

using UnityEngine; [ExecuteAlways] public class ExampleClass : MonoBehaviour { void Start() { if (Application.IsPlaying(gameObject)) { // Play logic } else { // Editor logic } } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3