Unity C# | Time & time & deltaTime

2022/12/14閱讀時間約 2 分鐘

前言

  這篇文章將會講述時間系統,以及 time 和 deltaTime 兩個時間類型。

Time | 時間系統

  時間在遊戲中是舉足輕重的核心變數,分別為遊戲完整的時間和每幀時間。

time | 時間

  這是一個唯獨浮點數,自遊戲啟動以來的秒數,在 Awake() 期間並不會被定義,如果遊戲暫停,這個時間並不會繼續計時,通常用於遊戲中關於整場遊戲計時的計算。
  它在遊戲暫停的時候,也會隨之暫停,所以很適合用於競速類遊戲的倒數計時計算,如果希望記錄遊戲完整時間(包含暫停),在後面我們最講到這部分。

deltaTime | 每幀時間

  這是一個唯獨浮點數,值為上一幀到當前幀的間隔(以秒為單位),因此它會記錄每幀所花費的秒數,使用 Time.time
運用它的特性,我們可以用來製作計時器和倒數裝置,也能很好的紀錄某些技能的時間變化,是相當常用的一個變數。
  在使用 OnGUI 的時候不要使用 deltaTime,因為 Unity 可能每幀會多次呼叫它,因此要做 deltaTime 的累加會變得不準確。

Time.time | 時間

  這是一個唯獨浮點數,可以記錄時間,並檢查時間是否超過某個時間,運用這個方式,能製作出「當遊戲經過幾分鐘,觸發事件。」這種事情。

遊戲遊玩時間

  遊戲在遊玩的過程中,Time 會持續累加,因此只要監測這個值的變化就可以了,也可以直接運用這個值去做數值運算,不過因為是唯獨的關係並不能直接修改這個值。

遊戲實際時間

  如果希望取得包含暫停時間在內的所有遊戲實際時間,可以考慮使用另外一個變數「realtimeSinceStartup」,它會記錄遊戲從開始後的所有時間,很適合記錄遊戲實際時間。

Time.deltaTime | 每幀時間

  每一幀的時間,可以用於累加,產生不同的效果。

每幀時間

  當電腦的效能不同,時間的累加就會產生不同的數值,因此去算每幀時間的累加會比時間的監測更好用,同時,每幀時間也能製作出程式動畫的效果,因為它是每幀的秒數,所以可以寫每秒動幾公尺的做法下去寫。

計時器

  關於計時器,我之前有寫一篇文章很適合,詳情可以參考。

後記

  寫這篇文章意外的花不了多久的時間,可能是因為 deltaTime 本身就是相當常用的一個變數,所以只需要補齊相關的程式內容即可。

瓶裝雪

參考資料

《Unity API | Time.time》

《Unity API | Time.realtimeSinceStartup》

《Unity API | Time.deltaTime》

為什麼會看到廣告
96會員
242內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
發表第一個留言支持創作者!