Timeクラスのプロパティ一覧

2020年11月18日

この記事では、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プロパティに対し、この値の逆数を設定します。

参考ページ