用途:整理 Unity 中 MonoBehaviour 生命周期与执行顺序的正确写法,帮助识别初始化顺序、销毁时机、fake-null、禁用组件以及编辑器与运行时差异导致的错误。
主要能力:覆盖多个模式。fake-null 陷阱:销毁后的对象 C# 引用仍存在,?.、??、is null 会绕过 Unity 的 == 重写,应使用 == null 或隐式 bool。Destroy 延迟到帧末执行,遍历中销毁需先收集再处理,DestroyImmediate 仅限编辑器。禁用组件仍会执行 Awake,Start 在组件启用时才执行。事件订阅应放在 OnEnable/OnDisable 以应对禁用、场景重载与对象池。OnValidate 仅编辑器运行,构建中会被剥离。ExecuteAlways 在编辑模式下 Update 仅在场景视图重绘时运行,Time.deltaTime 不可靠。RuntimeInitializeOnLoadMethod 默认 AfterSceneLoad,可用 SubsystemRegistration、BeforeSceneLoad 等控制时机。脚本执行顺序可用 DefaultExecutionOrder 或项目设置指定,Awake 做自身初始化、Start 做跨对象引用。退出时用 OnApplicationQuit 保存数据,OnDestroy 只清理自身资源。异步方法应传入 destroyCancellationToken,使用 async Awaitable 而非 async void。
使用方式:作为 Unity 脚本编写与审查的参考模式,按具体场景对照正确与错误写法。
适用场景:Unity 项目开发、代码审查、排查生命周期相关异常。
限制:资料未提供安装命令、收费、平台与效果信息;部分 API 版本要求(如 Awaitable、ExecuteAlways)需结合所用 Unity 版本确认。