前往
大廳
主題

Unity C# | timeScale & unscaledTime

瓶裝雪 | 2022-12-16 19:00:01 | 巴幣 2 | 人氣 330

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

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

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

瓶裝雪

參考資料


送禮物贊助創作者 !
0
留言

創作回應

相關創作

更多創作