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自己都找不著。