Unity3D 脚本生命周期

作者:二三   2019-12-16 10:47:55   581

一、初始阶段

Awake: 始终在任何启动功能之前以及预制之后调用此功能被实例化。(如果GameObject在启动过程中处于非活动状态,则直到激活它为止,才会调用Awake。)

理解:创建游戏对象后Awake立即执行(早于Start),仅执行一次,用于初始化。


OnEnable : 脚本对象启用时执行。

理解:脚本对象一启用就立马执行,每次启用都会执行。

 

Start: 仅在启用脚本实例的情况下,在第一帧更新之前调用Start。对于添加到场景中的对象,将在Update之前在所有脚本上调用Start函数,以此类推。自然地,在游戏过程中实例化对象时不能强制执行此操作。

理解:创建游戏对象且脚本启用后执行,在Awake后面执行,仅执行一次,用于初始化。




二、逻辑阶段

FixedUpdate: 与Update相比,FixedUpdate通常被更频繁地调用。如果帧速率低,则可以每帧多次调用它;如果帧速率高,则可以在帧之间根本不调用它。所有物理计算和更新都在FixedUpdate之后立即进行。在FixedUpdate中应用运动计算时,不需要将值乘以Time.deltaTime。这是因为在可靠的计时器上调用了FixedUpdate,而与帧速率无关。

理解:每隔固定时间执行一次(时间可以修改,默认为0.02s一次)。适用于对物体做物理操作(移动,旋转......),不受渲染影响。


Update: 每帧调用一次更新。它是帧更新的主要功能。

理解:渲染帧执行,执行时间不固定。适用于处理游戏逻辑。 


LateUpdate: 更新完成后,每帧调用一次LateUpdate。LateUpdate开始时,Update中执行的所有计算都将完成。LateUpdate的常见用法是后续的第三人称相机。如果使角色移动并转到Update内部,则可以在LateUpdate中执行所有摄像机的移动和旋转计算。这将确保角色在摄像机跟踪其位置之前已完全移动。 

理解:在Update函数被调用后执行,适用于跟随逻辑。


三、结束阶段

OnDisable: 当行为变为禁用或不活动状态时,将调用此函数。


OnDestroy: 在对对象存在的最后一帧进行所有帧更新后调用此函数(对象可能会响应Object.Destroy或在场景关闭时被破坏)。

理解:当脚本销毁或者附属的游戏对象被销毁时调用。 


OnApplicationQuit:  在退出应用程序之前,将在所有游戏对象上调用此函数。在编辑器中,当用户停止播放模式时会调用它。


附Unity3D生命周期流程图:



热门文章 关于前台使用ajax后台使用PhpSpreadsheet从数据库导出excel 对于Laravel Blade模板转义html标签的记录 PHP-文件上传 去除隐藏字符—— PHP-验证码制作
评论成功!
评论内容不能为空

tips:仅支持jpg,jpeg,png格式图片。