【Unity3D 教程系列第 2 篇】Update,LateUpdate,FixedUpdate 的区别
我正在参加「掘金·启航计划」
这是【Unity3D 教程系列第 2 篇】,如果觉得有用的话,欢迎关注专栏。
在脚本的整个生命周期中,Unity 主要提供了 3 种更新方法
- Update():每一帧执行时,都会立即调用此方法。
- LateUpdate():LateUpdate 是在所有 Update 方法调用之后被调用(语出圣典)。
- FixedUpdate():固定更新。默认情况下,系统每 0.02 秒调用一次。 具体的间隔时间可以在 TimeManager 中配置(详见文末)。
区别
总体来说,Update() 和 LateUpdate() 属于立即更新,更新之间的频率是不固定的,比如某一帧有一个耗时操作时,就会影响到下一帧更新时间,所以对更新频率要求比较稳定的物理系统(如Rididbody)就不太适合在这里处理更新。
FixedUpdate() 虽然是固定更新,但是其实也是相对固定的,比如某一帧耗了好几秒,它依然会卡住。不过正常的程序会优化耗时操作,小范围的帧率波动是正常的,可以让它更新的时间间隔稍微长一点,这样它的更新是比较平滑的。
在实际的开发中,例如以秒为单位的倒计时,并不需要每一帧去判断时间,所以用 FixedUpdate 就再合适不过了。
拓展:TimeManager(时间管理类)
在导航菜单栏中选择 Edtior→Project Settings→Time 菜单项,如下图所示
术语解释:
Fixed Timestep:固定时间步长。功能:独立于帧速率的时间间隔,用来命令何时执行物理计算和FixedUpdate() 事件。
Maximum Allowed Timestep:允许的最大时间步长。功能:独立于帧速率的时间间隔,当帧速率低时,它会覆盖最坏的案例场景,执行物理计算和(FixedUpdate()) 事件的时间不会超过规定的时间。
Time Scale:时间尺度 ,控制游戏的速度,0在游戏中代表暂停,1表示正常运行,2表示时间加倍;
你的问题得到解决了吗?欢迎在评论区留言。
赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。
技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。
结束语
最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。
「其他文章」
- 【Unity3D 教程系列第 1 篇】Unity如何去掉自带动画?
- 【Unity3D 教程系列第 2 篇】Update,LateUpdate,FixedUpdate 的区别
- 【Flutter 问题系列第 67 篇】在 Flutter 中使用 Get 插件在 Dialog 弹窗中不能二次跳转路由问题的解决方案
- 【Flutter 问题系列第 66 篇】本地存在多个 Flutter SDK 版本时,项目前后因引用了不同版本的 SDK 导致部分包文件报错的解决方案
- 【Git 教程系列第 8 篇】将工作区的改动“添加“到暂存区 — git add
- 【Flutter 问题系列第 28 篇】Container 嵌套 Container 时,明明指定了子组件的宽高,为什么不起作用 ?
- 【Flutter 问题系列第 5 篇】Flutter 去除 ListView 组件中的蓝色回弹效果
- 【Flutter 问题系列第 3 篇】如何去除 Flutter 中点击按钮、底部导航栏的水波纹效果