Time.timeScale プロパティは、ゲーム世界でのリアルタイムに対する相対的な時間の経過率を定義します。Time.timeScale 値が 1.0 の場合は、ゲーム内時間がリアルタイムと一致することを表します。値を 2.0 にすると、ゲーム内の時間が現実世界の 2 倍速くなり、ゲーム内のアクションが速くなります。値を 0.5 にすると、ゲームプレイは半分のスピードに減速します。値を 0 にすると、ゲーム内時間が完全に停止します。
Time.timeScale は実際には実行を遅くしませんが、代わりに Time.deltaTime と Time.fixedDeltaTime で Update 関数と FixedUpdate 関数に報告される時間ステップを変更します。
Update 機能は、タイムスケールを縮小した場合にも同じ高頻度で呼び出される可能性がありますが、各フレームの Time.deltaTime の値は小さくなります。他のスクリプト関数はタイムスケールの影響を受けないため、例えばゲームが一時停止しているときに通常のインタラクションで GUI を表示できます。
スローモーションなどの特殊な時間効果では、ゲーム時間の経過を遅くして、コード内のアニメーションや時間ベースの計算を低速で行うようにすると有効な場合があります。さらに、ゲームの一時停止時のように、ゲーム時間を完全に凍結することが必要な場合があります。
Time ウィンドウには、タイムスケールをグローバルに設定できるプロパティがありますが、通常は、Time-timeScale プロパティを使用してスクリプトから値を設定する方が簡便に処理できます。
//C# script example
using UnityEngine;
using System.Collections;
public class ExampleScript : MonoBehaviour {
void Pause() {
Time.timeScale = 0;
}
void Resume() {
Time.timeScale = 1;
}
}