Version: 2019.4
ScriptableObject
Herramientas de Scripting

Corriendo Código Script del Editor en la Ejecución

A veces, es útil ser capaz de correr algo de código script del editor en un proyecto tan pronto Unity se ejecuta sin requerir una acción por parte del usuario. Usted puede hacer esto al aplicar el atributo InitializeOnLoad a una clase que tiene un static constructor (constructor estático). Un constructor estático es una función con el mismo nombre que la clase, declarado estático y sin un tipo de retorno o parámetros (ver aquí for more information):-

using UnityEngine;
using UnityEditor;

[InitializeOnLoad]
public class Startup {
    static Startup()
    {
        Debug.Log("Up and running");
    }
}

Un constructor estático siempre se garantiza que será llamado antes de cualquier función estática o instancia de la clase utilizada, pero el atributo InitializeOnLoad asegura que es llamado cuando el editor se ejecuta.

Un ejemplo de cómo esta técnica puede ser utilizado es configurando un callback regular en el editor (su “actualización de frame”, por así decirlo). La clase EditorApplication tiene un delegado llamado update que es llamado tantas veces en un segundo mientras el editor está ejecutándose. Para tener este delegado activado cuando el proyecto se ejecute, usted podría utilizar código como el siguiente:-

using UnityEditor;
using UnityEngine;

[InitializeOnLoad]
class MyClass
{
    static MyClass ()
    {
        EditorApplication.update += Update;
    }

    static void Update ()
    {
        Debug.Log("Updating");
    }
}

ScriptableObject
Herramientas de Scripting