关于Update,FixedUpdate,与LateUpdate的区别 (初学:15)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lfanyize/article/details/101989042

首先要知道的是:
void Update()是用来更新的;
void FixedUpdate()是用来固定更新的;
void LateUpdate()是用来晚于更新的;
详细解释:Update()
Update是系统默认每一帧都调用的方法,它有个缺点,即它的调用会随着硬件帧数的变化而变化,它的更新时间不确定,有的时候快,有的时候慢,比如上一帧用了几毫秒,下一帧可能会用几秒。
FixedUpdate与Update方法的相同之处在于当MonoBehaviour被启动的时候,这两个方法都是会在每一帧都被调用,不同之处在于,FixedUpdate方法在调用的时候,它的调用事件是一定的,也就是说,他不会随着系统的帧数而发生变化。
所以一些物理属性的更新操作应该放在FxiedUpdate中操作,比如Force,Collider,Rigidbody等。外设的操作也是,比如说键盘或者鼠标的输入输出Input,因为这样GameObject的物理表现的更平滑,更接近现实。
LateUpdate,从名字上就可以看出,它是晚于Update调用,比如实现相机跟随的功能,当被跟随的物体都移动完成之后,在调用LateUpdate中的相机跟随功能。具体的实现机制是,Unity在后台将所有的Update、LateUpdate制作成两个不相干的线程,先执行Update所在的线程,当执行完之后,再去执行LateUpdate所在的线程。
好处:比如说,有两个不同的脚本同时在Update中控制同一个物体,如果当物体发生物理变化的时候,如旋转,在世界中的连续位置变化等等,如果将相机跟随的函数方法写在了Update中,就会发生相机中物体在抖动的现象,如果写在LataUpdate中,相机只会跟随物体在更新之后的位置,这样物体就不会发生抖动了。

猜你喜欢

转载自blog.csdn.net/lfanyize/article/details/101989042