檢舉內容
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》

為什麼會看到廣告
贊助支持創作者,成為他繼續創作的動力吧!
設計資歷越久,越能感到設計的龐大與通用性」在2020年9月,我成為一名大學生,在經營方格子的同時,往設計師邁進,未來希望專攻遊戲程式與企劃。
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
發表第一個留言支持創作者!
《遊設計》Unity 的其他內容
Unity C# | Unity Event
閱讀時間約 2 分鐘
Unity Particle System | Circular wave
閱讀時間約 2 分鐘
Unity Component | Types of light
閱讀時間約 1 分鐘
Unity Preferb | Spring Platform
閱讀時間約 2 分鐘
你可能也想看
領取見面禮
只要設定追蹤作者,即可享有 48小時
Premium 閱讀權限