unity生命周期函数执行顺序

本文详细解析了Unity引擎中从对象初始化到销毁的生命周期事件,包括Reset、Awake、OnEnable、Start、FixedUpdate、OnTrigger、OnCollision、Update、yield return、LateUpdate、OnGUI、OnDisable及OnDestroy等关键步骤。了解这些事件的执行顺序对于优化游戏逻辑和资源管理至关重要。

Reset->Awake->OnEnable->start->FixedUpdate->OnTrigger->OnCollision->Update->yield return->LateUpdate->OnGUI->OnDisable->OnDestory在这里插入图片描述

### Unity 生命周期函数调用顺序Unity 中,生命周期函数执行顺序是固定且有序的。对于每个对象上的每个脚本实例而言,这些函数会依照特定序列被逐一触发。 #### 初始化阶段 - **Awake** 当场景加载完成之后,在任何 `Start` 方法前调用该方法。如果多个组件都定义了 `Awake()` 函数,则其实际调用次序不确定,不过开发者可以手动调整以确保预期行为[^2]。 - **OnBeforeTransformParentChanged (仅限于父物体变换即将改变时)** 此回调会在当前 GameObject 的 Transform 即将成为另一个 GameObject 子节点之前立即得到通知。 - **OnInitAnimator (仅适用于带有 Animator 组件的对象)** 这是在初始化动画控制器时会被调用的方法。 - **Start** 只有当 Script 实例第一次启用并准备开始工作的时候才会被执行一次;它通常位于第一个 Update 前面发生。 #### 更新循环 - **FixedUpdate** 物理计算和物理引擎相关的操作应该放置在此处,因为它是基于固定的时间间隔来进行更新而不是每一帧都刷新。 - **PreLateUpdate 和其他内部更新过程** 包含一系列由 Unity 自身管理的过程,比如摄像机渲染等。 - **Update** 是最常用的每帧更新逻辑所在位置,适合用来处理大多数的游戏逻辑业务,如输入检测、角色移动控制等等[^5]。 - **LateUpdate** 总是在常规 `Update` 循环结束后才运行,常用于跟随相机或者其他依赖于上一帧结果的操作。 #### 渲染相关 - **OnPostRender** 对应着每一个 Camera 执行完毕后的时刻,可用于自定义后期效果绘制等内容。 - **OnGUI/OnGUIScene(已废弃)** #### 销毁清理 - **OnDestroy** 在 MonoBehaviour 被销毁时调用,无论是通过代码还是由于场景切换等原因造成的卸载都会触发展开相应的资源释放动作。 #### 应用程序级别事件响应 - **OnApplicationPause(bool pauseStatus)** 表明应用程序进入暂停状态或是恢复活动状态之时所发生的事件。 - **OnApplicationFocus(bool focusStatus)** 用户界面获得或失去焦点的情况下将会激活此消息传递机制。 - **OnApplicationQuit()** 在应用正式结束前给予最后一次机会去执行必要的收尾任务,例如保存进度数据到持久化存储介质里[^4]。 ```csharp using UnityEngine; public class LifecycleExample : MonoBehaviour { void Awake(){ Debug.Log("Awake called"); } void OnEnable(){ Debug.Log("OnEnable called"); } void Start(){ Debug.Log("Start called"); } private void FixedUpdate(){ Debug.Log("FixedUpdate called"); } void Update(){ Debug.Log("Update called"); } void LateUpdate(){ Debug.Log("LateUpdate called"); } void OnDestroy(){ Debug.Log("OnDestroy called"); } void OnApplicationQuit(){ Debug.Log("OnApplicationQuit called"); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值