Описание
Заставляет все экземпляры скрипта выполняться в режиме редактирования.
По умолчанию MonoBehaviours выполняются только в режиме воспроизведения. При добавлении этого атрибута любой экземпляр MonoBehaviour будет выполнять свои функции обратного вызова, пока редактор находится в режиме редактирования.
Этот атрибут постепенно упраздняется, так как он не учитывает сборный режим. Если Prefab с MonoBehaviour с включенным этим атрибутом редактируется в Prefab Mode и входит в Play Mode, редактор выйдет из Prefab Mode, чтобы предотвратить случайные изменения Prefab, вызванные логикой, предназначенной только для Play Mode.
Чтобы указать, что MonoBehaviour правильно учитывает Prefab Mode и его безопасно открывать в Prefab Mode в Play Mode, вместо атрибута можно использовать атрибут ExecuteAlways. здесь.
Функции не вызываются постоянно, как в режиме воспроизведения.
- Update вызывается только тогда, когда что-то изменилось в сцене.
- Awake вызывается только при создании экземпляра скрипта.
- OnGUI вызывается, когда Game View получает не предназначенное только для редактора Event, которое он не использует ( например, EventType.ScrollWheel) и не перенаправляется в систему сочетаний клавиш редактора (например, EventType.KeyDown). , EventType.KeyUp). События, пересылаемые в Game View, ставятся в очередь, и их немедленная обработка не гарантируется.
- OnRenderObject и другие функции обратного вызова рендеринга вызываются при каждой перерисовке представления сцены или представления игры.
Смотрите так же: ExecuteAlways, Application.IsPlaying, runInEditMode, EditorApplication.QueuePlayerLoopUpdate.
// The PrintAwake script is placed on a GameObject. The Awake function is usually
// called when the GameObject is started at runtime. Due to the ExecuteInEditMode
// attribute, the script is also called by the Editor. The Awake() function will be called,
// for example, when the Scene is changed to a
// different Scene in the Project window.
// The Update() function is called, for example, when the GameObject transform
// position is changed in the Editor.
using UnityEngine;
[ExecuteInEditMode]
public class PrintAwake : MonoBehaviour
{
void Awake()
{
Debug.Log("Editor causes this Awake");
}
void Update()
{
Debug.Log("Editor causes this Update");
}
}