unity中存在三种更新方式Update、FixedUpdate、LateUpdate。这三种更新方式分别应用于不同的情形。

Update更新

update是每次渲染新的一帧时才会调用,和机器性能有着紧密的联系。如果机器的性能较差或者场景较复杂,Update的更新频率会出现较大的波动,因此和机型性能以及需要精准计算的操作不宜出现在Update中。

FixedUpdate固定更新

FixedUpdate是固定时间更新,也就是说这个函数和帧率无关,他的更新频率是固定的。在unity中默认的更新频率是0.02秒,当然你也可以通过Edit->ProjectSetting->Time->FixedTimeStep来设置更新频率。
FixedUpdate应用于物理碰撞和倒计时等需要精准数据的操作。如果把物理操作放在Update中,因为碰撞检测的时间是固定的,当物体发生碰撞时,如果人物未停止移动,则下一帧物体会继续移动,这样就会产生抖动。通俗来讲就是Update的更新频率太快大于了碰撞检测的频率,物体已经向前移动了,但还未进行碰撞检测,因此人物会穿越过去,待碰撞检测完毕后人物又会被弹出去。

LateUpdate晚于更新

LateUpdate是延迟更新函数。处于激活状态下的脚本每一帧都会在Update执行完毕后再执行LateUpdate,通常用来调整代码的执行顺序。
LateUpdate配合Update常常会产生意想不到的效果。例如物体的跟随(相机视角跟随人物移动)如果相机放在Update有可能会出现抖动,这是因为相机可能先于人物执行了跟随移动指令,人物之后再执行移动指令,此时相机的视距就会发生变化,因此就会产生抖动。如果经相机操作写在Update中可以确保人物位置确定完毕后再确定相机的位置和旋转。

03-05 20:31