Unity之Update與FixedUpdate區別
阿新 • • 發佈:2018-03-01
str 點擊 區別 com unity 3-0 auto ongui info
下面這段代碼演示遊戲暫停
using UnityEngine; using System.Collections; public class GamePauseTest : MonoBehaviour { public float moveSpeed = 2.0f; void Update () { //move transform.Translate (new Vector3 (0, 0, moveSpeed * Time.deltaTime)); } void OnGUI () {GamePauseTestif (GUI.Button (new Rect (140, 0, 100, 50), "暫停")) { Time.timeScale = 0; } if (GUI.Button (new Rect (280, 0, 100, 50), "繼續")) { Time.timeScale = 1; } } }
註意事項
示例中的 速度*Time.deltaTime ,目的是保證遊戲運行在 幀數不同的情況下角色移動速度都一樣,因為此時角色是按時間移動與幀數無關。
Update和FixedUpdate區別
FPS=2的情況
FPS=60的情況
Update和FPS有關
從上面的兩幅圖可以看了,當FPS為2時,update打印的次數特別少,而當FPS改為60時,update打印的次數就明顯提高了很多
總結
update跟當前平臺的幀數有關,而FixedUpdate是真實時間,所以處理物理邏輯的時候要把代碼放在FixedUpdate而不是Update.
Update
Update是在每次渲染新的一幀的時候才會調用,也就是說,這個函數的更新頻率和設備的性能有關以及被渲染的物體(可以認為是三角形的數量)。在性能好的機器上可能fps 30,差的可能小些。這會導致同一個遊戲在不同的機器上效果不一致,有的快有的慢。因為Update的執行間隔不一樣了。
FixedUpdate
FixedUpdate是在固定的時間間隔執行,不受遊戲幀率的影響。Tick:在處理Rigidbody的時候最好用FixedUpdate。
修改FixedUpdaet
FixedUpdate的時間間隔可以在項目設置中更改,點擊 Edit - Project Setting - time 找到 Fixed timestep,就可以修改了。
點擊查看原文
Unity之Update與FixedUpdate區別