Time.deltaTime は、それを呼び出すループ関数(Update や FixedUpdate)に応じて自動的に出力される値を変化させます。
FixedUpdate の更新間隔は Time.fixedDeltaTime で取得できますが、スクリプトリファレンスでは以下のように説明され、Update と FixedUpdate のどちらにおいても更新間隔の取得に Time.deltaTime を使用することが推奨されています。
For reading the delta time it is recommended to use Time.deltaTime instead
because it automatically returns the right delta time if you are inside a FixedUpdate function or Update function.
Time-fixedDeltaTime – Unity スクリプトリファレンス
ループされる関数の種類を気にしなくても Time.deltaTime によってその更新間隔を得ることができるようです。
Time.deltaTimeの出力
試しに簡単なスクリプトを作り、実際に出力される値を調べてみました。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class DeltaTimeTest : MonoBehaviour { void Update() { // Update における Time.deltaTime を出力 if (Input.GetKeyDown(KeyCode.Escape)) { print("Time.deltaTime in Update: " + Time.deltaTime); } } void FixedUpdate() { // FixedUpdate における Time.deltaTime を出力 if (Input.GetKeyDown(KeyCode.Space)) { print("Time.deltaTime in FixedUpdate: " + Time.deltaTime); } } }
このスクリプトは、Escapeキーを押すと Update における Time.deltaTime の値を、Spaceキーを押すと FixedUpdate における Time.deltaTime を出力します。
試したプロジェクトにおける時間間隔の設定と実行結果は以下のようになります。
設定
実行結果
どちらも 0.02 に近い値が出力されました。
Update 関数内においては、実行する度に異なる値が出力されますが、FixedUpdate 関数内では、毎回きっちり 0.02 が出力されています。
以上、UpdateとFixedUpdateにおけるTime.deltaTimeの実行結果でした。