如果Unity开发中,我们期望在运行时中不通过外部调用的情况下能够主动的对代码框架进行初始化、对象实例生成等操作,可以使用
RuntimeInitializeOnLoadMethod
特性来实现
示例代码放到Unity Editor的Assets目录下运行即可看到打印出的日志内容。日志内容描述了方法执行的时间节点。
using UnityEngine;
public static class RuntimeInitializer
{
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
static void SubsystemRegistration()
{
Debug.Log($"1_SubsystemRegistration_用于子系统注册的回调");
}
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterAssembliesLoaded)]
static void AfterAssembliesLoaded()
{
Debug.Log($"2_AfterAssembliesLoaded_加载完所有程序集并初始化预加载资源时的回调");
}
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)]
static void BeforeSplashScreen()
{
Debug.Log($"3_BeforeSplashScreen_在显示启动画面之前");
}
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
static void BeforeSceneLoad()
{
Debug.Log($"4_BeforeSceneLoad_在场景加载前");
}
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
static void AfterSceneLoad()
{
Debug.Log($"5_AfterSceneLoad_在场景加载后");
}
}