InitializeOnLoadAttribute
класс в UnityEditor
Описание
Позволяет инициализировать класс редактора при загрузке Unity и при перекомпиляции скриптов.
Статические конструкторы с этим атрибутом вызываются при перекомпиляции скриптов в проекте, также известной как Перезагрузка домена). Это происходит, когда:
- Unity сначала загружает ваш проект.
- Unity обнаруживает изменения в скриптах, если Автоматическое обновление включен в разделе Конвейер ассетов в Окно настроек).
- Вход в режим Игры, если перезагрузка домена включена в вашей конфигурации Режима Игры).
Избегайте операций с ассетами, таких как загрузка ассетов в InitializeOnLoad методы. InitializeOnLoad методы вызываются до завершения импорта ассетов, что означает, что загрузка ассетов из этого контекста может завершиться неудачей, что приведет к появлению нулевого объекта. Для инициализации после перезагрузки домена, требующей операций с ассетами, используйте AssetPostprocessor.OnPostprocessAllAssets callback. Этот обратный вызов поддерживает все операции с ассетами и имеет параметр, сигнализирующий о перезагрузке домена.
Дополнительные ресурсы: InitializeOnLoadMethodAttribute.
// The following code example defines a small custom class decorated with `[InitializeOnLoad]` // and assigns a member method to the `EditorApplication.update` delegate so that it runs and begins // printing to the console on Editor launch.
using UnityEditor; using UnityEngine;
// InitializeOnLoad ensures this code runs on Editor launch [InitializeOnLoad] class MyClass { // Define a static constructor in which we assign the custom Update method to the delegate static MyClass () { EditorApplication.update += Update; }
// Define a method with the required signature that performs work we want to do on launch static void Update () { Debug.Log("Updating"); } }