应用场景: 有些时候我们希望一些编辑器脚本可以在打开Unity编辑器时就自动运行,而不是被手动执行;
InitializeOnLoad特性用于解决这个问题,只需要给一个类加上该特性以及给这个类声明一个static构造函数;这个静态构造函数将会在这个类所有静态函数和实例被使用前调用,InitializeOnLoad会保证该函数在打开unity编辑器时就开始执行,而不是在运行时才启动;
using UnityEditor;
using UnityEngine;
[InitializeOnLoad]
class MyClass
{
static MyClass ()
{
//update是一个委托类型的变量
EditorApplication.update += Update;
}
static void Update ()
{
Debug.Log("Updating");
}
}
示例:如果有一些资源,比如ScriptableObject对象,希望打开编辑器时自动创建,而不是由开发者手动创建,就需要用到这个功能;
InitializeOnLoadMethod():用于一个静态方法前,类似[MenuItem]