Unity C# | timeScale & unscaledTime

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

前言

  這篇文章將會講述子彈時間、暫停時間相關的時間規模。

Time

  我有寫過兩篇關於遊戲時間的文章,有興趣可以參考看看。

timeScale | 時間流逝的尺度

  Scale 在英文中有《尺度,刻度;等級》和《大小;規模;範圍》的涵義在內,在 Untiy 中,timeScale 是嫆於控制遊戲整體時間運作快慢的一個變數。

時間快慢

  當 TimeScale=0 的時候,遊戲內一切都會停止,包含動畫、程式等等,遊戲會靜止在這一剎那;當 TimeScale =0.5 的時候,就會像子彈時間一樣,遊戲世界的時間速度會減半,形成類似子彈時間的世界。

時間類型

  在時間中有兩種類型,分別為 deltaTime 和 time ,時間流逝也同樣控管這兩種時間類型,當遊戲暫停的時候,deltaTime 會歸零,time 會停止累加。

常見問題

  在我第一次使用 TimeScale 的時候,我發現時間暫停是暫停了,但是暫停介面的動畫也停止了,這導致根本無法做其他的撰寫,接下來會介紹另一個相對的變數,叫做《unscaledTime》。

unscaledTime | 沒有尺度的時間

  聽起來很酷,是吧?其實在講真實時間,也就是不受規模影響的時間,通常會搭配 TimeScale 進行撰寫或使用。

真實時間

  雖然我不知道為什麼不是命名為《timeUnscaled》,不過這個變數是用於不受規模影響的時間,如果遊戲中不涉及暫停,那就完全不需要使用到這個變數才對。

唯獨 | ReadOnly

  有一點注意的事情,Time.timeScale 在遊戲中是一個可以被設計師修改的變數,而Time.unscaledTime 是一個不能被修改的唯獨變數,因此我們是不能修改 unscaledTime 的數值。

動畫編輯器 | Animator

動畫腳本中可以調整 Update() 的運作模式,如下圖:
  當我們調整更新模式以後,這個動畫編輯器的更新模式就是使用不受遊戲內時間控管,那怕遊戲進入暫停,依然會持續運作與更新。

後記

  這篇文章是我研究暫停介面的延伸文章,雖然我以為內容沒有很豐富,不過這樣細寫下來,也不失為一個好文章,因為它把該介紹的內容都介紹了。

瓶裝雪

參考資料

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