[Unity] ポーズ機能やスローモーション演出が実装できる!Time.timeScaleの使い方。

(2024/10/01)

開発環境
  • Unityのバージョン:2022.3.32f1
  • Unityでのゲーム開発では、ポーズ機能やスローモーション演出などゲーム内の時間をコントロールすることが必要な場面が多くあります。 今回は、Time.timeScaleを活用して、時間の進むスピードを変更する方法を解説します。

    Time.timeScaleとは?

    Time.timeScaleは、Unityにおけるゲーム内時間の進み具合を調整するための変数です。この変数を変更することで、ゲーム全体の時間の流れを制御できます。 デフォルトでは値は1になっています。0にしたら時間が停止します。

    Time.timeScaleの使い方

    下のコードではスペースキーを押すと時間が停止し、もう一度押すと停止が解除されます。

    using UnityEngine;
    
    public class Sample : MonoBehaviour
    {
        void Update()
        {
            if (Input.GetKeyDown(KeyCode.Space))
            {
                if (Time.timeScale == 1)
                {
                    // タイムスケールを0に設定
                    Time.timeScale = 0f;
                }
                else
                {
                    // それ以外の場合、タイムスケールを1に戻す
                    Time.timeScale = 1f;
                }
            }
        }
    } 
    

    また、Time.timeScaleの値を2にすると早送り、0.5でスローモーション演出が出来ます。