版本: Unity 6 (6000.0)
语言English
  • C#

RuntimeInitializeOnLoadMethodAttribute

UnityEngine 中的类

/

继承自:Scripting.PreserveAttribute

/

实现于:UnityEngine.CoreModule

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

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

使用 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 控制何时调用回调。

继承的成员