Unity脚本事件函数执行顺序(一)

本文详细解析Unity脚本生命周期中的Awake、OnEnable、Start、FixedUpdate、Update和LateUpdate函数调用时机,帮助开发者避免常见Bug。

最近在写程序时候因为调用顺序的一个小错误导致出现了Bug,所以想整体的整理一下Unity脚本的事件函数执行顺序。

脚本生命周期流程图:

首先看一下官方的流程图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面根据时间线来梳理一下每个函数的调用时间以及用途特性:

场景加载时

场景内所有对象的 Awake 和 OnEnable 函数将在场景加载时被调用一次,
Awake: 在实例化对象之后会调用此函数如果对象的Active为false状态则在变为true之后才会调用。
OnEnable: 在启用对象之后会调用此函数SetActive时会调用OnEnable(),但是不会调用Awake()。在调用 SetActive(true)时,会触发OnEnable()事件,就算对象之前本就是activetrue,事件依然会发生,在调用SetActive(false)时,会触发OnDisable()事件,就算对象之前本就是activefalse,事件依然会发生。
还要注意的是在游戏过程中不能强制调用他们

Editor

Reset: Reset会在脚本首次附加到对象时以及在Inspector中reset时调用,所以他可以用于初始化脚本的属性

第一帧更新前

Start: Start会在第一帧更新前被调用,所有场景资源中的对象在调用Update()之前会先调用Start()

更新

FixUpdate: FixedUpdate()不受游戏帧率影响,他的调用基于独立于帧率的可靠的计时器,它可能在同一帧内执行多次,也可能在某帧不执行,这取决于游戏的帧率高低。因此若在FixedUpdate()做运动计算的时候,不需要考虑增量时间Time.deltaTime。
Update: Update()每帧调用一次,其调用次数和频率不是固定的,会根据帧率波动,这一点下面的LateUpdate也是一样的
LateUpdate: LateUpdate()也是每帧调用一次,会和Update在同一帧执行,它是在Update()执行完以后执行,他的执行次数也会根据帧率变化。对于要做摄像机跟随的游戏,可以在Update()中做移动转向逻辑,在LateUpdate()中做摄像机跟随。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值