Unity 的時間邏輯流程圖
flowchart TD A["`deltaTime`"] --> B{"`deltaTime 是否比 maximumDeltaTime 大?`"} B -- 是 --> C[deltaTime 的值設為
maximumDeltaTime] C --> D B -- 否 --> D[ deltaTime
被加到 time 中 ] D --> E{"`fixedTime 是否落後 Time.time 一個固定時間步長?`"} E -- 是 --> F[ fixedDeltaTime
加到 fixedTime中 ] F --> G[ 執行 FixedUpdate ] G --> E E -- 否 --> H[ 執行 Update ]
Time.time
:為遊戲開始後經過的時間,以秒為單位,一般會持續穩定的增加,只可讀。
- 受
timeScale
影響,如果Time.timeScale
設為 0 ,那麼Time.time
會停止計時,可以達到遊戲暫停的功能。 - 受
maximumDeltaTime
限制。 - 當在
FixedUpdate
中呼叫時,回傳的是Time.fixedTime
的值。 - 通常用於關於整場遊戲計時的計算。
Time.deltaTime
:從上一個幀到目前幀之間的時間間隔,以秒為單位。
- 可以在遊戲中用來製作倒數裝置,例如施放技能的時間變化。
Time.timeScale
:時間流逝的縮放程度,可以用在實現慢動作效果,預設為 1.0 。
- 當為 1.0 時,表示遊戲時間和真實時間同步,
- 如果設為 0.5 則遊戲時間以半速運行。
- 設為 0.1 可以實現慢動作效果,這表示播放速度為正常速度的 10%。經過十秒之後
Time.time
的值會增加 1。 - 當為 0 時,則時間停止,但是遊戲邏輯(像是
Update
方法仍然會被呼叫)與渲染事件仍然會被觸發。但Time.time
不會增加,Time.deltaTime
也為 0。
Time.maximumDeltaTime
:上面的屬性會被 Time.maximumDeltaTime
限制,這表示這些屬性任何幀率變化的長度永遠不會超過 Time.maximumDeltaTime
,例如,如果發生一秒的延遲,且 maximumDeltaTime
為 0.333,那麼 Time.time
只會增加 0.333,而 Time.deltaTime
也會等於 0.333,儘管實際上已經過了更多時間。
unscale
版本的屬性(如Time.unscaledTime
和Time.unscaledDeltaTime
)會忽略這些變化和限制,並回報實際經過的時間。對於需要在遊戲慢動作播放時仍以固定速度響應的任何事物都很有用。例如,用於 UI 交互動畫。
返回 時間與幀 大綱
Reference: