Unity中FixedUpdate和Update的區別


   最近剛接觸Unity一週,發現對於很多組件的原理不是十分清楚,其中一個就是腳本生命週期中的FixedUpdate和Update的區別。其實要想學好Unity必須具備計算機圖形學的知識,奈何自己太無知,當初沒有學習這門課程,現在只能咬牙自學。

   首先說結論:物理模擬放在FixedUpdate中。

   原因首先得說FixedUpdate和Update的區別,FixedUpdate是每隔一定的週期執行一次,比如每隔1秒執行30次;Update是每幀之前執行一次,比如一般的FPS爲30,也就是1秒有30幀,那麼也是1秒執行30次。但是每隔一定的週期執行與系統性能無關,無論系統怎麼樣,都會1秒執行30次。而幀與系統性能有關,通常受到渲染的影響。比如同樣一款遊戲,性能好的電腦的FPS是30,差一點的可能只有10。這樣Update就不是固定的1秒30次了。這也是爲什麼你玩DOTA的時候爲什麼總感覺對面手速比你快,也可能是因爲人家電腦比你好,同樣的畫面人家比你快1ms,你的電腦這些畫面還在顯卡里面處理,所以人家大招比你早放1ms,等你看到畫面的時候就是死亡畫面了。

  那麼爲什麼物理模擬要放在FixedUpdate中呢?舉個例子,A和B相距30米,一個人從A移動到B,在Unity中可能是這樣實現的,在Update/FixedUpdate中寫個位移函數,每次移動1米。那麼對於在FixedUpdate中寫,不論電腦怎麼樣,1秒內執行了30次,這個人從A移動到了B。但是對於寫在Update中的情況,如果電腦好,FPS爲30,1秒內執行了30次,這個人同樣從A移動到了B,但是電腦性能差,FPS爲10,1秒執行了10次,這個人只移動了10米。

   當然上面只是個例子,說的專業一點就是Update會因爲系統性能產生抖動的現象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章