Timeクラスのプロパティ一覧
この記事では、UnityのTimeクラスにある各プロパティについて説明します。
Timeクラスとは
UnitiEngine.Time
クラスは、「時間に関する情報」を取得・設定するためのインターフェースを管理するクラスです。このクラスは静的プロパティのみで作られているため、インスタンス化せずに使用できます。
プロパティ
timeScale
時間が経過する速度の倍率です。Time
クラスに存在するいくつかのプロパティは、時間を加算する時にこの値を乗算してから加えます。
初期値は「Project Settings」>「Time」>「Time Scale」で指定した値になります。
この値はFixedUpdate
関数や、WaitForSeconds
クラスなどにも影響を与えます。
realtimeSinceStartup
「ゲームを開始した時」から「現在」までの経過時間です。この値はtimeScale
プロパティの影響を受けません。
time
「1フレーム目を開始した時」から「現在のフレームを開始した時」までの経過時間です。この値はtimeScale
プロパティの影響を受けます。
この値をFixedUpdate
関数内で使用した場合、fixedTime
プロパティと同じ値を返します。
( 公式ドキュメントに計測を開始する時間は「ゲームを開始した時」と書いてあります。しかし、time
プロパティの値を調べると、1フレーム目が0であり、それ以降では経過したフレームの数だけdeltaTime
プロパティを加算した値となります。そのため、計測を開始する時間を「1フレーム目を開始した時」と説明しました。 )
unscaledTime
「ゲームを開始した時」から「現在のフレームを開始した時」までの経過時間です。この値はtimeScale
プロパティの影響を受けません。
この値をFixedUpdate
関数内で使用した場合、fixedUnscaledTime
プロパティと同じ値を返します。
timeSinceLevelLoad
「シーンを読み込んだ時」から「現在のフレームを開始した時」までの経過時間です。この値はtimeScale
プロパティの影響を受けます。
シーンを追加した場合( SceneManager.LoadScene
関数に定数LoadSceneMode.Additive
を指定した場合 )、この値はリセットされません。
deltaTime
「前のフレームを開始した時」から「現在のフレームを開始した時」までの経過時間( 前のフレームの処理時間 )です。この値はtimeScale
プロパティの影響を受けます。
この値をFixedUpdate
関数内で使用した場合、fixedDeltaTime
プロパティと同じ値を返します。
unscaledDeltaTime
「前のフレームを開始した時」から「現在のフレームを開始した時」までの経過時間( 前のフレームの処理時間 )です。この値はtimeScale
プロパティの影響を受けません。
この値をFixedUpdate
関数内で使用した場合、fixedUnscaledDeltaTime
プロパティと同じ値を返します。
smoothDeltaTime
deltaTime
プロパティを平滑化した時間です。
公式ドキュメントにこれ以上の情報が載ってないため具体的なことは分かりませんが、おそらくこの値は、補間係数を「0.2」として「前のフレームのSmoothDeltaTime
プロパティ」と「( 現在の )deltaTime
プロパティ」を線形補間した値です。
coefficient = 0.2
smoothDeltaTime = deltaTime * coefficient + previousSmoothDeltaTime * ( 1 - coefficient )
fixedTime
「最初にFixedUpdate
関数の実行を開始した時」から「最後にFixedUpdate
関数の実行を開始した時」までの経過時間です。この値はtimeScale
プロパティの影響を受けます。
( 公式ドキュメントに計測を開始する時間は「ゲームを開始した時」と書いてあります。しかし、fixedTime
プロパティの値を調べると、最初にFixedUpdate
関数の実行を開始した時が0であり、それ以降ではFixedUpdate
関数の実行を開始した回数だけfixedDeltaTime
プロパティを加算した値となります。そのため、計測を開始する時間を「最初にFixedUpdate
関数の実行を開始した時」と説明しました。 )
fixedUnscaledTime
「最初にFixedUpdate
関数の実行を開始した時」から「最後にFixedUpdate
関数の実行を開始した時」までの経過時間です。この値はtimeScale
プロパティの影響を受けません。
( fixedTime
プロパティと同様の理由で、「最初にFixedUpdate
関数の実行を開始した時」を計測を開始する時間として説明しました。 )
fixedDeltaTime
FixedUpdate
関数やOnCollisionXXX
関数などの処理を実行する間隔( 固定時間ステップ )です。この間隔はtime
プロパティに依存しているため、timeScale
プロパティの影響を受けます。
初期値は「Project Settings」>「Time」>「Fixed Timestep」で指定した値になります。
fixedUnscaledDeltaTime
「最後から2番目にFixedUpdate
関数の実行を開始した時」から「最後にFixedUpdate
関数の実行を開始した時」までの経過時間です。この値はtimeScale
プロパティの影響を受けません。
frameCount
経過したフレーム数です。
inFixedTimeStep
固定時間ステップで実行される関数( FixedUpdate関数やOnCollisionXXX
関数など )内か判別する値( bool
型 )です。
maximumDeltaTime
1フレームにかかる最大時間( deltaTime
の最大値 )です。1フレーム
の処理時間( unscaledDeltaTime
)がこの値を超える場合、deltaTime
プロパティはこの値をtimeScale
プロパティで割った値になります。
初期値は「Project Settings」>「Time」>「Maximum Allowed Timestep」で指定した値になります。
固定時間ステップで実行される処理は、time
プロパティに依存しています。そのため、1フレームにかかる最大時間で制限することで、処理負荷がかかった時( maximumDeltaTime
プロパティの値を超える重い処理が実行された時 )に固定時間ステップ内の処理を実行する回数を減らします。これによりフレームレートを素早く追いつかせることができます。( ただしこの影響により、実時間からのズレが発生します。 )
maximumParticleDeltaTime
パーティクルの更新を行う間隔です。この値を小さくすることで高精度のシミュレーションを実現できます。また、この値は、1度の更新でパーティクルの更新に費やすことができる最大時間でもあります。そのため、1度の更新でパーティクルの更新にかかる時間がこの時間を超える場合、その更新は分割して処理されます。
初期値は「Project Settings」>「Time」>「Maximum Particle Timestep」で指定した値になります。
captureFramerate
キャプチャするためのフレームレートです。
この値に0( 初期値 )より大きい値を設定するとUnityは実時間を無視し、deltaTime
プロパティは固定の時間( 1 / captureFramerate * timeScale
)になります。これにより一定の間隔の結果をキャプチャできます。
captureDeltaTime
captureFramerate
プロパティを設定した時の1フレームの時間です。この値は、captureFramerame
プロパティの逆数になります。
この値を設定した場合、同時にcaptureFramerate
プロパティに対し、この値の逆数を設定します。