日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

void Update ( ) 更新 void FixedUpdate ( )

發布時間:2023/11/30 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 void Update ( ) 更新 void FixedUpdate ( ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

void Update ( ) 更新?
void FixedUpdate ( ) 固定更新

相同點:當MonoBehaviour啟用時,其在每一幀被調用,都是用來更新的。?
異同點:第一點不同:?
Update()每一幀的時間不固定,即第一幀與第二幀的時間間隔t1和第三幀與第四幀的時間間隔t2不一定相同。比如:

代碼片段:

using UnityEngine;using System.Collections;public class TestScript : MonoBehaviour{int i = 0;float time = 0f;void Update () {i ++;time = Time.deltaTime;Debug.Log("這是第" + i + "幀");Debug.Log("時間為:" + time);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

這里t1 = 0.04 - 0.02 = 0.02;t2 = 0.55 - 0.35 = 0.2;大約相差了十倍。而如果使用FixedUpdate()會出現什么情況?

代碼片段:

using UnityEngine;using System.Collections;public class TestScript : MonoBehaviour{int i = 0;float time = 0f;void FixedUpdate () {i ++;time = Time.deltaTime;Debug.Log("這是第" + i + "幀");Debug.Log("時間為:" + time);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

我們很清楚地看到t1 = t2 = 0.02。也就是說,FixedUpdate()每幀與每幀之間相差的時間是固定的,而Update()不是固定的。?
第二點不同:?
Update受當前渲染的物體影響,這與當前場景中正在被渲染的物體有關(比如人物的面數,個數等),有時快有時慢,幀率會變化,Update被調用的時間間隔就會發生變化。但是FixedUpdate則不受幀率的變化影響,它是以固定的時間間隔來被調用。?
在官網文檔中也提到說: 處理Rigidbody時,需要用FixedUpdate代替Update。例如:給剛體加一個作用力時,你必須應用作用力在FixedUpdate里的固定幀,而不是Update中的幀。(兩者幀長不同)。正是因為FixedUpdate是以固定的時間間隔來被調用,所以人物運動起來比較平滑(運動起來不會有忽快忽慢的感覺,像是跳幀似的),這也就是為什么處理Rigidbody時要用FixedUpdate了(當然還有其他一些原因)。FixedUpdate是以固定的時間間隔來被調用的,而這個固定的時間是可以修改的。?
Edit->Project Setting->time 下的Fixed timestep。?
?
這里是0.02;與上面做的實驗t1 = t2 = 0.02一致

總結

以上是生活随笔為你收集整理的void Update ( ) 更新 void FixedUpdate ( )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。