シンプルなアクションゲームを作ってみようの第20回です。
今回はゲームを中断する機能を作成していきます。
前回はプレイヤーキャラクターにジャンプ機能を搭載しました。

シンプルなアクションゲームを作ってみようの他の記事は

シンプルなアクションゲームを作るのを通してUnityの使い方を学ぶカテゴリです。
から参照出来ます。
ポーズ機能を作成する
ポーズ機能を作成していきましょう。
ポーズ時に表示するUIを作成する
まずはゲームをポーズしている時に表示するUIを作成します。
ヒエラルキーでUIゲームオブジェクトを選択している状態で右クリックからUI→Canvasを選択し、名前をPauseとします。
次にPauseゲームオブジェクトを選択した状態で右クリックからUI→Panelを選択し、名前をPausePanelとします。
さらにPausePanelを選択した状態でUI→Text – TextMeshProを選択し、名前をPauseTextとします。
ヒエラルキーは以下のようになりました。
PauseTextのインスペクタで以下のように設定します。
Text Inputの下にはPauseという文字列を入力します。
Vertex Colorは青色にしテキストを青色にします。
AlignmentはCenterとMiddleを選択します。
日本語フォントがあるフォントを使ってフォントアセットを作成し使用するか、アルファベットをText Inputに入力してください。
これでポーズ時に表示するUIが出来ました。
ポーズさせるスクリプトの作成
次にポーズにするボタンを押したらポーズ画面を表示し、ゲームを中断させるスクリプトを作成します。
Assets/Scriptsに新しくPauseScriptスクリプトを作成し、GameManagerゲームオブジェクトに取り付けます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | using System.Collections; using System.Collections.Generic; using UnityEngine; public class PauseScript : MonoBehaviour { // 停止中に表示するUI [SerializeField] private GameObject pauseUI; // Start is called before the first frame update void Start() { // スタート時にポーズUIを非表示にする pauseUI.SetActive(false); } // Update is called once per frame void Update() { // ポーズボタンを押した時 if (Input.GetButtonDown("Pause")) { if (Mathf.Approximately(Time.timeScale, 1f)) { Time.timeScale = 0f; pauseUI.SetActive(true); } else { Time.timeScale = 1f; pauseUI.SetActive(false); } } } } |
pauseUIにはインスペクタでPauseゲームオブジェクトを設定します。
StartメソッドではpauseUI.SetActiveメソッドを使って非アクティブにし見えないようにします。
UpdateメソッドではPauseボタンを押した場合にMathf.Approximatelyメソッドを使ってTime.timeScaleと1fを比較しています。
Mathf.Approximatelyはfloatの比較を出来ます。
Time.timeScaleは通常のゲームスピード時が1なので、1であればゲームをしている状態なのでTime.timeScaleを0に設定し、ゲームが止まるようにします。
pauseUI.SetActive(true)でポーズ用UIを表示します。
それ以外の時はゲームを開始する時なのでTime.timeScaleを1にし、ポーズ用UIを非表示にします。
これでスクリプトが出来たので次はInputManagerにPauseボタンを設定します。
UnityメニューのEdit→Project Settingsを選択し、Input Managerを選択します。
AxesのSizeの値を1増やします(おそらく18から19に変える)。
Cancelの設定の下に複製したCancelが出来るので、NameにPauseを設定します。
Cancelボタンのキーがescapeになっているのでその複製であるPauseボタンのキーもescapeとなっています。
今回はそのままescapeにし、ESCキーが押されたらポーズにします。
実行して確認してみる
機能が出来たので実行して確認してみましょう。
GameManagerゲームオブジェクトのPauseScriptのPause UIにPauseゲームオブジェクトをドラッグ&ドロップするのを忘れない様にしてください。
上のようになりました。
終わりに
今回はポーズ機能を作成しました。
次回はライトのベイクをしていきます。