您好,登錄后才能下訂單哦!
void FixedUpdate () 固定更新
void Update () 更新
void LateUpdate() 晚于更新
FixedUpdate () 和 Update ()
同:當MonoBehaviour啟用時,其在每一幀被調用。都是用來更新的
異:Update()每一幀的時間不固定,即第一幀與第二幀的時間t1和第三幀與第四幀的時間t2不一定相同。FixedUpdate()每幀與每幀之間相差的時間是固定的.
Update受當前渲染的物體影響,這與當前場景中正在被渲染的物體有關(比如人物的面數,個數等),有時快有時慢,幀率會變化,Update被調用的時間間隔就會發生變化。但是FixedUpdate則不受幀率的變化影響,它是以固定的時間間隔來被調用。
所以一些物理屬性的更新操作應該放在FxiedUpdate中操作,比如Force,Collider,Rigidbody等。外設的操作也是,比如說鍵盤或者鼠標的輸入輸出Input,因為這樣GameObject的物理表現的更平滑,更接近現實。
FixedUpdate的時間間隔可以在項目設置中更改,Edit->Project Setting->time 找到Fixed timestep。就可以修改了
Update和LateUpdate
LateUpdate是在所有Update函數調用后被調用。可用于調整腳本執行順序。例如:當物體在Update里移動時,跟隨物體的相機可以在LateUpdate里實現。
Unity后臺主線程將 Update LateUpdate 制作成兩個多線程 先去執行Update的線程,等Update 執行完畢后 在去執行LateUpdate線程。
舉個例子,一個宿舍4個人,每個人的起床在update中執行,出發在某個人中的lateupdate執行,這樣就可以保證每個人都起床了才會出發。
因為多個update函數是先后順序是隨機的,所以可能攝像機先update而物體還未移動,而下一幀是若物體先update那么就會出現瞬移的情況。多數攝像機都要加上LateUpdate,即所有場景內的調用結束后再更新攝像機。
比如說:有2個不同的腳本同時在Update中控制一個物體,那么當其中一個腳本改變物體方位、旋轉或者其他參數時,另一個腳本也在改變這些東西,那么這個物體的方位、旋轉就會出現一定的反復。如果還有個物體在Update中跟隨這個物體移動、旋轉的話,那跟隨的物體就會出現抖動。 如果是在LateUpdate中跟隨的話就會只跟隨所有Update執行完后的最后位置、旋轉,這樣就防止了抖動。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。