Update FixUpdate LateUpdate 适用范围 FixUpdate不能随意用

Update  FixUpdate LateUpdate
适用范围 注意FixUpdate只应当适用于物体逻辑

void FixedUpdate () 固定更新

void Update ()        更新
同:当MonoBehaviour启用时,其在每一帧被调用。都是用来更新的
异:Update()每一帧的时间不固定,即第一帧与第二帧的时间t1和第三帧与第四帧的时间t2不一定相同。比如:
这里t1 = 0.04 - 0.02 = 0.02;t2 = 0.55 - 0.35 = 0.2;大约相差了十倍。而如果用FixedUpdate()呢?
  
我们很清楚地看到t1 = t2 = 0.02。
也就是说,FixedUpdate()每帧与每帧之间相差的时间是固定的,而Update()不是固定的。
第二点不同:
Update受当前渲染的物体影响,这与当前场景中正在被渲染的物体有关(比如人物的面数,个数等),有时快有时慢,帧率会变化,Update被调用的时间间隔就会发生变化。
但是FixedUpdate则不受帧率的变化影响,它是以固定的时间间隔来被调用。
在官网文档中也提到说: 处理Rigidbody时,需要用FixedUpdate代替Update。例如:给刚体加一个作用力时,你必须应用作用力在FixedUpdate里的固定帧,而不是Update中的帧。(两者帧长不同)。正是因为FixedUpdate是以固定的时间间隔来被调用,所以人物运动起来比较平滑(运动起来不会有忽快忽慢的感觉,像是跳帧似的),这也就是为什么处理Rigidbody时要用FixedUpdate了(当然还有其他一些原因)。
FixedUpdate是以固定的时间间隔来被调用的,而这个固定的时间是可以修改的。

Edit->Project Setting->time   下的Fixed timestep。

总结:

Update是在每次渲染新的一帧的时候才会调用
FixedUpdate是在固定的时间间隔执行,不受游戏帧率的影响
FixedUpdate的时间间隔可以在项目设置中更改,点击 Edit - Project Setting - time  找到 Fixed timestep,就可以修改了。
LateUpdate是晚于所有Update执行的。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值