脚本组件的生命周期
前言
脚本组件的生与死-生命周期回调时机
# 一. 生命周期
一个组件从初始化到激活,再到最终销毁的完整生命周期函数调用顺序为:
onLoad → onEnable → start → update → lateUpdate → onDisable → onDestroy
脚本组件的存在依赖于节点,但其生命周期是独立存在的, 也就是说当节点创建(parent
),激活(active
)和销毁(destroy
)时,会触发该节点上脚本组件的生命周期,但当节点操作脚本组件,创建(addComponent
),激活(enabled
)和销毁(removeComponent
)时,也会触发脚本组件完整的生命周期。
# onLoad
脚本组件的初始化阶段,当脚本组件所在节点首次激活时,或者节点处于激活状态下,脚本组件被挂载到节点(addComponent)时触发
# onEnable
当脚本组件的 enabled 属性从 false 变为 true 时,或者所在节点的 active 属性从 false 变为 true 时触发
# start
在脚本组件第一次激活前,也就是第一次执行 update 之前触发
# update
游戏开发的一个关键点是在每一帧渲染前更新物体的行为,状态和方位。这些更新操作通常都放在 update 回调中
# lateUpdate
update 会在所有动画更新前执行,但如果我们要在动效(如动画、粒子、物理等)更新之后才进行一些额外操作,或者希望在所有组件的 update 都执行完之后才进行其它操作,那就需要用到 lateUpdate 回调
# onDisable
当脚本组件的 enabled 属性从 true 变为 false 时,或者所在节点的 active 属性从 true 变为 false 时,或者该脚本组件被移除(removeComponent)时触发
# onDestroy
当脚本组件或者所在节点调用了 destroy() 时 ,或者该脚本组件被移除(removeComponent)时触发,并在当帧结束时统一回收组件
# 二. NodePool中的生命周期
当节点在 NodePool 中时:
# onLoad
、start
只会在节点第一次从 NodePool 中取出时触发
# onEnable
当节点从 NodePool 中取出时触发
# onDisable
当节点被放回 NodePool 时触发
# onDestroy
当 NodePool 被 clear 时触发
在 NodePool 中也可以使用 unuse 和 reuse 函数
← 节点常用 API Label 缓存模式 →