语言English
  • C#

RuntimeInitializeOnLoadMethodAttribute

UnityEngine 中的类

/

继承自:Scripting.PreserveAttribute

/

实现于:UnityEngine.CoreModule

描述

使用此属性在运行时启动并加载第一个场景时获取回调。

使用 RuntimeInitializeLoadType 的各种选项来控制在启动序列中何时调用该方法。

以下列表显示了 RuntimeInitializeLoadType 回调的执行顺序

  1. 首先初始化各种低级系统(窗口、程序集、图形等)。
  2. 然后调用 SubsystemRegistrationAfterAssembliesLoaded 回调。
  3. 更多设置(输入系统等)。
  4. 然后调用 BeforeSplashScreen 回调。
  5. 现在第一个场景开始加载。
  6. 然后调用 BeforeSceneLoad 回调。此处加载场景的对象,但尚未调用 Awake()。此处所有对象都被视为非活动状态。
  7. 现在在 MonoBehaviour 上调用 Awake() 和 OnEnable()。
  8. 然后调用 AfterSceneLoad 回调。此处场景中的对象被视为已完全加载和设置。可以使用 FindObjectsByType 查找活动对象。

以上详细信息是在启动 Player 构建时的情况。在编辑器中进入播放模式时,会确保相同的调用。

默认回调调用时间为 RuntimeInitializeLoadType.AfterSceneLoad。不保证每个 RuntimeInitializeLoadType 回调中的执行顺序。

注意:在包含一个或多个具有 [RuntimeInitializeOnLoadMethod] 属性但可能不包含项目构建的任何场景中直接或间接使用的类型的程序集的软件包或预编译程序集上使用 AlwaysLinkAssemblyAttribute

其他资源:托管代码剥离

// Demonstration of the RuntimeInitializeOnLoadMethod attribute
using UnityEngine;

class MyClass { [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)] static void OnBeforeSplashScreen() { Debug.Log("Before SplashScreen is shown and before the first scene is loaded."); }

[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] static void OnBeforeSceneLoad() { Debug.Log("First scene loading: Before Awake is called."); }

[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)] static void OnAfterSceneLoad() { Debug.Log("First scene loaded: After Awake is called."); }

[RuntimeInitializeOnLoadMethod] static void OnRuntimeInitialized() { Debug.Log("Runtime initialized: First scene loaded: After Awake is called."); } }

属性

loadType控制回调调用时间。

构造函数

RuntimeInitializeOnLoadMethodAttribute使用 RuntimeInitializeLoadType 控制何时调用回调。

继承的成员


Did you find this page useful? Please give it a rating: