Unity3D Update和FixedUpdate的区别及深入探讨

注:本文禁止一切形式的转载

大多数对Update和FixedUpdate进行说明的文章都只说明了Update是每帧更新、FixedUpdate是固定间隔更新,以及Unity设置面板上的一些参数说明,但是都没有说明白Unity是如何保证FixedUpdate能固定时间间隔更新、以及如何与Update进行协调。这里我主要探讨下面几个问题:

  1. Update的计算量以及FixedUpdate的计算量会如何影响它们的调用频率
  2. 如果Update计算量极大,超出了设置的Maximum Allowed Timestep,Unity会如何反应?
  3. 如果FixedUpdate计算量极大,超出了Fixed Timestep,甚至花了几秒,Unity会如何反应?

FixedUpdate

Unity在Edit -> Project Setting -> Time中可以看到关于项目中时间的设置,其中Fixed Timestep就是FixedUpdate的调用间隔。因为FixedUpdate可以保持固定的时间间隔调用,因此某些需要在时间上精确模拟的任务就需要放在FixedUpdate中。那为什么Update不可以呢?

如果你在Update中打印Time.deltaTime的话,就会发现deltaTime非常不稳定,最短可以达到你设置的帧间隔,但卡的时候甚至会卡成ppt那样几秒一帧。想象一下假如你现在做了一个3D的RPG游戏,主角的移动通过在Update中用速度 speed 乘以 时间差 Time.deltaTime 模拟,如果某帧卡顿了很久,Time.deltaTime将会变得很大,导致下一帧主角会无视地图障碍直接瞬移到一个很远的

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值