InitializeOnLoadMethod是Unity引擎提供的一个特性(Attribute),用于在Unity编辑器启动时自动执行指定的静态方法。这一特性非常适用于需要在编辑器启动时进行初始化操作的场景,如注册事件监听器、创建单例对象或检查项目设置等。 2. InitializeOnLoadMethod的作用 自动执行:在Unity编辑器启动时,带有InitializeOnLoadMethod特性的静...
using UnityEngine;using UnityEditor;//首先要继承EditorWindow窗口类publicclassExample:EditorWindow{[InitializeOnLoadMethod]privatestaticvoidOnEditorLaunch(){//代码重新编译时该方法也会重新执行//使用时间判断避免重复执行if(EditorApplication.timeSinceStartup<30){//向此委托添加函数,以便将其执行延迟到检视面板更新...
InitializeOnLoadMethod 第一次打开 Unity 编辑器运行一次,之后每次进入 Play 模式都运行一次 RuntimeInitializeOnLoadMethod 在每次进入 Play 模式时运行一次,还可以通过参数确定在加载场景之前还是之后调用方法。 RuntimeInitializeLoadType.AfterSceneLoad// 加载场景后RuntimeInitializeLoadType.BeforeSceneLoad// 在加载场景...
[RuntimeInitializeOnLoadMethod] static void OnRuntimeMethodLoad() { Debug.Log("RuntimeMethodLoad: After first Scene loaded"); } } 上面代码会在第一个场景的Awake方法调用前输出字符串Before first Scene loaded。 在第一个场景的Awake方法调用后,Start方法调用前输出字符串After first Scene loaded和Runtime...
使用了该特性的静态函数会在Unity工程加载时,不需要用户做任何操作,函数将会自动执行,下面是使用该特性实现的一个简单的窗口: 代码如下: usingUnityEngine;usingUnityEditor;publicclassExample:EditorWindow{[InitializeOnLoadMethod]privatestaticvoidOnEditorLaunch(){//代码重新编译时该方法也会重新执行//使用时间判断...
Unity 5.0开始增加了RuntimeInitializeOnLoadMethodAttribute,这样就很方便在游戏初始化之前做一些额外的初始化工作,比如:Bulgy参数设置、SDK初始等工作。 先来看一下它的生命周期 sing UnityEngine;publicclassExampleClass : MonoBehaviour {privatevoidAwake()
通过给 InitializeOnLoad 和 InitializeOnLoadMethod 加宏,来控制一些工具类的开关,业务开发环境下,可以对这些工具类的初始化进行关闭,来优化编辑器重载速度 优化编译时间效果比对(编译重载时间受缓存等环境影响,取的只是单次值,没有取平均值) 总耗时总优化比例编译编译优化比例重载重载优化比例 未处理 移动到 Standard ...
Unity 5.0开始增加了RuntimeInitializeOnLoadMethodAttribute,这样就很方便在游戏初始化之前做一些额外的初始化工作,比如:Bulgy参数设置、SDK初始等工作。 先来看一下它的生命周期 代码语言:javascript 复制 sing UnityEngine;publicclassExampleClass:MonoBehaviour{privatevoidAwake(){Debug.Log("Awake");}privatevoidOnEnable...
注意:标记为[RuntimeInitializeOnLoadMethod]的方法的执行顺序是不确定的。 // Create a non-MonoBehaviourclass which displays // messages when a game is loaded. using UnityEngine; class MyClass { [RuntimeInitializeOnLoadMethod] static void OnRuntimeMethodLoad() {Debug.Log("AfterSceneis loaded and gam...
RuntimeInitializeOnLoadMethod也可以用于初始化一些数据。例如: [RuntimeInitializeOnLoadMethod] static void InitGameData() { GameData.Initialize(); } 1. 2. 3. 4. 5. 在上述代码中,InitGameData()方法被标记为默认的RuntimeInitializeLoadType.SubsystemRegistration。这意味着该函数将在子系统注册后执行。我们...