ゲーム画面を一時停止・再開する機能を作成してみる|Unityゲーム制作

Unityの2Dゲームでゲーム中の画面を「一時停止/再開」するのを実装していきます。

はじめに

Unityのバージョンは「2021.3.14f1」で作成しています。

ゲームを「一時停止/再開」する簡易的な機能を実装していきます。

画像は下記を利用していきます。私がInkscapeで簡単に作成したものです。下記2つの画像をUnityに取り込んでおきます。

実装開始

「UI」→「Legacy」→「Button」を追加します。

ButtonのSourceImageに停止ボタン画像をセットしてサイズを合わせます。ボタンの配下のTextは削除しておきます。

スクリプトの作成

下記スクリプトを作成します。

using UnityEngine;
using UnityEngine.UI;

public class Pause : MonoBehaviour
{
    [SerializeField] private Sprite pause;
    [SerializeField] private Sprite play;

    private Button btn;

    private void Start()
    {
        btn = GetComponent<Button>();
        btn.image.sprite = pause;
    }

    public void ChangeControll()
    {
        if (btn.image.sprite == pause)
        {
            Time.timeScale = 0;
            btn.image.sprite = play;
        }
        else
        {
            Time.timeScale = 1;
            btn.image.sprite = pause;
        }
    }
}

「Time.timeScale=0」で時間停止しています。現在の画像で処理を分けています。

「Time.timeScale」の詳しい説明は下記リファレンスにあります。

ボタンオブジェクトにスクリプトを追加して、各パラメータに画像をセットします。また、OnClick()に関数を呼び出すように割り当てます。

実行すると下記のような感じに「停止/再開」ができます。画面中央の数字は時間経過を表示するタイマーです。停止時に時間が進まなければOKです。

簡易的な「停止/再開ボタン」が完成です。

停止時に設定などを表示

次に、停止したときに再開以外に設定やメニューに戻るなどを追加したい場合です。

「UI」→「Panel」を追加します。

パネルの配下に再開ボタン、メニューに戻るボタンなどをセットします。(今回は再開ボタンのみ)

スクリプトを下記に変更します。パネルの「有効/無効」を切り替えています。

using UnityEngine;

public class Pause : MonoBehaviour
{
    [SerializeField] private Sprite pause;
    [SerializeField] private GameObject PausePanel;
    [SerializeField] private GameObject btn;

    private void Start()
    {
        PausePanel.SetActive(false);
    }

    public void ChangeControll()
    {
        if (!PausePanel.activeSelf)
        {
            Time.timeScale = 0;
            PausePanel.SetActive(true);
            btn.SetActive(false);
        }
        else
        {
            Time.timeScale = 1;
            PausePanel.SetActive(false);
            btn.SetActive(true);
        }
    }
}

スクリプトのパラメータをセットします。

パネルの配下のボタンのOnClock()にも割り当てます。

実行すると下記のような感じに。停止したときにパネルが表示されます。ここに設定などを表示することで変更することができます。

タイトルとURLをコピーしました