Unity-Time時間類(1)

Time是在Unity中獲取時間資訊的一種class,本篇將介紹Time中的time、deltaTime。

Time.time

  • time是一種返回float數據類型的屬性,只有get屬性,所以為只讀屬性(Read Only)
    time001
  • 主要功能:計算從程式被呼叫執行到當前幀數(frame)的總時間長

範例:

  void Update()
    {
        if (Input.GetButtonDown("Jump")
        {
            Debug.Log("遊戲進行時間為:" + Time.time + "秒");
        }
    }

輸出結果:
time002


Time.deltaTime

  • deltaTime是一種返回float數據類型的屬性,只有get屬性,所以為只讀屬性(Read Only)
    time003
  • 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秒)
time004

將一個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)
    }

執行結果:

發表留言