生命周期函数
生命周期函数执行的顺序如下:
Awake() -> OnEnable() -> Start() -> FixedUpdate() -> Update() -> LateUpdate() -> OnDisable() -> OnDestroy() -> OnApplicationQuit()
准备阶段
Awake()
当脚本实例被加载时最先调用。Awake()
通常用于初始化变量和设置依赖关系,它会在所有对象的Start()
方法之前被调用,即使对象还未激活。
OnEnable()
在对象或脚本被启用时调用。如果对象在场景加载时已启用,OnEnable()
会在Awake()
之后立即调用。每次重新启用对象时,都会触发OnEnable()
。
Start()
在第一次更新前调用,仅在对象被启用的情况下调用一次。Start()
通常用于启动时的设置或在其他脚本的Awake()
完成后需要初始化的内容。
更新阶段
FixedUpdate()
以固定的时间间隔调用,通常用于物理更新(如物理计算和力学),与帧率无关。适用于刚体(Rigidbody)的操作。
Update()
每帧调用一次,基于帧率。Update()
通常用于大多数非物理的连续操作(如监听输入、移动角色)。
LateUpdate()
每帧在Update()
之后调用。适用于需要在其他更新逻辑完成后执行的操作,例如相机跟随。
结束阶段
OnDisable()
对象或脚本被禁用时调用,每次禁用时都会触发。用于停止某些状态或行为。
OnDestroy()
对象被销毁时调用,例如切换场景或销毁对象。适用于清理资源或解除事件绑定。
OnApplicationQuit()
当应用程序退出时调用,可以在此保存数据或清理资源。
暂停与恢复
OnApplicationPause(bool pauseStatus)
当应用暂停或恢复时调用,例如切换应用或暂停游戏。
OnApplicationFocus(bool hasFocus)
当应用获得或失去焦点时调用,常用于暂停和恢复输入或音乐等。