Update和FixedUpdate都是每帧调用的,但区别挺大。
Update是啥?每帧都执行,但帧间隔不固定,比如这秒跑60帧,下秒可能卡成30帧,时间忽长忽短,更新就不稳定。
而FixedUpdate不一样,它是按固定时间间隔来的,比如设成0.02秒就每0.02秒跑一次,雷打不动,节奏稳得很。
举个例子:
Update可能第一帧隔0.02秒,下一帧隔0.2秒,差十倍,角色移动就会一卡一卡的。
FixedUpdate?每帧间隔都是0.02秒,t1=t2,稳如老狗,动起来自然顺滑。
而且Update受画面影响大,场景里模型多、面数高,帧率一掉,Update就被拖慢。
FixedUpdate完全不受这个影响,只认自己的节奏,定时执行。
官方也说了:搞物理、动刚体(Rigidbody)的时候,必须用FixedUpdate!
比如给角色加个力,Force啊、速度啊,都得放FixedUpdate里,不然力一会儿大一会儿小,物理效果就乱套了。
因为物理引擎本身也是按固定时间步进的,跟FixedUpdate配套才对味儿。
顺便提一嘴,这个固定时间能改:
Edit → Project Settings → Time → Fixed Timestep 改数值就行,默认0.02秒(也就是50次/秒)。
总结:
动画、UI这些随帧率变的,用Update;
物理、刚体、需要稳定的逻辑,一律上FixedUpdate,别犹豫。
记住了,别混着用,不然bug自己都找不着。
Update是啥?每帧都执行,但帧间隔不固定,比如这秒跑60帧,下秒可能卡成30帧,时间忽长忽短,更新就不稳定。
而FixedUpdate不一样,它是按固定时间间隔来的,比如设成0.02秒就每0.02秒跑一次,雷打不动,节奏稳得很。
举个例子:
Update可能第一帧隔0.02秒,下一帧隔0.2秒,差十倍,角色移动就会一卡一卡的。
FixedUpdate?每帧间隔都是0.02秒,t1=t2,稳如老狗,动起来自然顺滑。
而且Update受画面影响大,场景里模型多、面数高,帧率一掉,Update就被拖慢。
FixedUpdate完全不受这个影响,只认自己的节奏,定时执行。
官方也说了:搞物理、动刚体(Rigidbody)的时候,必须用FixedUpdate!
比如给角色加个力,Force啊、速度啊,都得放FixedUpdate里,不然力一会儿大一会儿小,物理效果就乱套了。
因为物理引擎本身也是按固定时间步进的,跟FixedUpdate配套才对味儿。
顺便提一嘴,这个固定时间能改:
Edit → Project Settings → Time → Fixed Timestep 改数值就行,默认0.02秒(也就是50次/秒)。
总结:
动画、UI这些随帧率变的,用Update;
物理、刚体、需要稳定的逻辑,一律上FixedUpdate,别犹豫。
记住了,别混着用,不然bug自己都找不着。