Time是在Unity中獲取時間資訊的一種class,本篇將介紹Time中的time、deltaTime。
Time.time
- time是一種返回float數據類型的屬性,只有get屬性,所以為只讀屬性(Read Only)
- 主要功能:計算從程式被呼叫執行到當前幀數(frame)的總時間長
範例:
void Update() { if (Input.GetButtonDown("Jump") { Debug.Log("遊戲進行時間為:" + Time.time + "秒"); } }
輸出結果:
Time.deltaTime
- deltaTime是一種返回float數據類型的屬性,只有get屬性,所以為只讀屬性(Read Only)
- deltaTime是一種時間增量
- 代表從上一幀開始到當前幀結束,這兩幀之間的間隔時間,並且是以秒(second)為單位
- 通常使用Time.deltaTime*自定義float變數,達到控制速度的目的
由於幀數受到硬體軟體等影響,每秒幀數並不一定相同。假設一秒為60幀,代表在Unity的Update方法中會執行60次,其1幀時間為0.016秒;透過使用deltaTime,達到每秒幀數最後加總的時間長為一秒。
當前frame與前一個frame的時間差:
void Update() { if (Input.GetButtonDown("Jump") { Debug.Log("當前frame與前一個frame的時間差為:" + Time.deltaTime + "秒"); } }
輸出結果:(稍有誤差是因為fps不是固定值,但以平均60fps來計算,deltaTime約為0.016秒)
將一個cube每秒轉30度並上升:三種移動方法的視覺結果是一樣的
void Update() { transform.Rotate(Vector3.up, Time.deltaTime * AngleSpeed); transform.position += new Vector3(0, Time.deltaTime * Speed, 0);//移動方法(1) //transform.Translate(new Vector3(0, Time.deltaTime * Speed, 0));//移動方法(2) //transform.position = new Vector3(transform.position.x, transform.position.y + Time.deltaTime * Speed, transform.position.z);//移動方法(3) }
執行結果: