官方资料 传送门:Unity - 手动:事件函数的执行顺序https://docs.unity.cn/2019.4/Documentation/Manual/ExecutionOrder.html
参考文章 传送门:
从零开始的Unity学习_扩展阅读_3. Unity的生命周期 - 技术专栏 - Unity官方开发者社区https://developer.unity.cn/projects/62e1fb29edbc2a001eea952f【Unity】认识常用的生命周期函数(Awake、Start、Update...)_unity start函数-CSDN博客
https://blog.csdn.net/SEA_0825/article/details/125381275
前言
优先级决定了在同一时间点多个脚本之间的调用顺序,以确保逻辑正确执行。
理解和掌握 Unity 脚本生命周期的执行顺序和优先级有以下重要作用:
-
初始化和资源管理:在 Awake 和 Start 方法中进行游戏对象和组件的初始化,确保在游戏运行时一切就绪。(例如:加载一些启动资源)
-
游戏逻辑更新:在 Update 和 FixedUpdate 方法中处理游戏逻辑,从而实现游戏对象的动态行为。(例如:update 实时每帧监听状态)
-
优化和性能管理:通过合理使用 LateUpdate 和 FixedUpdate 等方法,优化物理计算和帧率表现。(LateUpdate 在所有Update方法调用后调用,适合处理需要依赖于其他对象位置或状态的逻辑,FixedUpdate 固定时间运行适合处理物理更新或其他需要固定时间间隔执行的操作)
-
状态管理:通过 OnEnable 和 OnDisable 方法处理对象的激活和非激活状态变化时的逻辑,比如启用或禁用特定功能。(例如:可以用于处理物体关联的一些东西)
-
资源释放:在 OnDestroy 方法中进行资源的释放和对象销毁前的清理工作,避免资源泄漏和不必要的内存占用。(清理资源和执行必要的收尾工作)
注意:物体被禁用时,Awake 和 Start 是不被执行的当物体被多次禁用和启用, Awake 和 Start 只有第一次启用的会被调用,而 OnEnable 和 OnDisable 则可以反复调用。当程序退出时,若对象处于启用状态,程序 禁用==> 销毁。
Unity 中的脚本生命周期主要围绕 MonoBehaviour 类的方法
根据下图可以很清晰的理解到 脚本生命周期流程(这个图官网就可以找到)
常用生命周期方法
-
Awake():
- 调用时机: 在游戏对象被实例化时调用,用于初始化设置。
- 作用: 主要用于初始化脚本,获取组件或者设置初始状态。在整个生命周期中,Awake是首先被调用的方法。
-
Start():
- 调用时机: 在Awake方法之后调用,首次进入Update之前调用。
- 作用: 通常用于初始化逻辑,例如设置游戏对象的初始状态、获取其他对象的引用或者启动协程等。
-
Update():
- 调用时机: 每帧调用一次。
- 作用: 用于更新游戏逻辑,比如移动对象、检测输入、处理游戏状态变化等。
-
FixedUpdate():
- 调用时机: 在固定的时间间隔内调用(默认为每帧次数固定)。
- 作用: 通常用于处理物理相关的逻辑,比如移动刚体、应用力、物理碰撞检测等。
-
LateUpdate():
- 调用时机: 在所有Update方法调用后调用。
- 作用: 用于处理需要依赖于其他对象最终状态的逻辑,比如跟随摄像机移动、更新UI等。
-
OnEnable():
- 调用时机: 当对象变为激活状态时调用。
- 作用: 主要用于在对象激活时执行一些初始化操作,比如注册事件、启用协程等。
-
OnDisable():
- 调用时机: 当对象变为非激活状态时调用。
- 作用: 主要用于在对象被禁用时执行清理操作,比如取消注册事件、停止协程等。
-
OnDestroy():
- 调用时机: 在对象被销毁时调用。
- 作用: 用于执行对象销毁前的最后操作,比如释放资源、清理状态等
总结:如果有需要详细了解的可以直接去官方文档查阅 ,顶部有传送门;官方文档讲的也比较详细了;本文章可作参考进行查阅,也是记录一下自己的学习过程了......