Unity之Update與FixedUpdate區別

來源:互聯網
上載者:User

標籤:rect   inf   邏輯   href   mes   scale   時間   cti   技術   

下面這段代碼示範遊戲暫停

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 ()    {        if (GUI.Button (new Rect (140, 0, 100, 50), "暫停")) {            Time.timeScale = 0;        }        if (GUI.Button (new Rect (280, 0, 100, 50), "繼續")) {            Time.timeScale = 1;        }    }}
GamePauseTest

 

注意事項

樣本中的 速度*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區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.