ブロック崩しゲームで状態管理を中心にゲーム作成。Part2.メニュー【Unityゲーム制作】

前回はブロック崩しのゲーム部分を作成したので、今回は「メニュー部分」と「終了部分」を作成し、メニュー画面からゲーム画面への移動を実装していきます。

はじめに

今回は第2回目です。第1回目のゲーム部分作成は下記から。

前回のおさらい、今回やること

前回、実装したのは下の図でいう「ゲーム」の部分。今回は「メニュー」と「終了」の部分と「メニュー」から「ゲーム」の矢印の部分を作成していきます。

メニューと終了の作成

まずは「メニュー」と「終了」の作成。複雑なゲームだと、シーンをそれぞれ作成すケースもあるかと思いますが、今回はパネルを使っていきます。

メニューパネル

まずはゲーム開始時のメニュー画面(メニューパネル)を作成。ヒエラルキーで「UI」→「パネル」を選択。

名前を「PanelMenu」にして配下に「ボタン」と「テキスト」を追加。

テキスト部分は下記のように幅、高さ、テキスト、フォントサイズなどを変更。

ボタンも同様に、サイズなどを適当に変更しておきます。この辺は好きな大きさで問題なし。下記のような感じにします。

終了パネル

次はゲーム終了時に表示するパネルを作成。同じように「UI」→「パネル」を追加。名前を「PanelFinish」にして、配下にテキストを追加。

下記のような感じにします。テキスト部分は「ゲームオーバー」や「ゲームクリア」など状況に応じて変化するため、<>表記しておきます。

メニューからゲームへの移動

「メニューパネル」と「終了パネル」を作成したので、次は「メニュー」から「ゲーム部分」への移動を作成していきます。

状態管理

まずは状態管理するのを追加します。空のオブジェクトを作成して、名前を「GameManager」にします。

同じ名前でスクリプトを作成して、オブジェクトにくっつけておきます。このGameManagerスクリプト内で状態を管理していきます。

プレハブ化・制御

ゲーム開始時の「メニューパネル」にボールとバーは不要なのでプレハブ化して、ヒエラルキーから削除しておきます。

GameManagerのスクリプトを下記のように変更。簡単に説明すると、ゲーム開始でステータスを「メニュー」に。メニュー状態では「メニューパネル」を有効に。StartClickでステータスを「ゲーム」に。ゲーム状態では「メニューパネル」を無効にして、ボールとプレイヤー(バー)を生成。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    public GameObject ballPrefab;
    public GameObject playerPrefab;

    public GameObject panelMenu;
    public GameObject panelFinish;

    public enum Status { MENU, GAME, FINISH }

    void Start()
    {
        ChangeStatus(Status.MENU);
    }

    public void StartClick()
    {
        ChangeStatus(Status.GAME);
    }

    void ChangeStatus(Status nextstatus)
    {
        switch (nextstatus)
        {
            case Status.MENU:
                panelMenu.SetActive(true);
                break;
            case Status.GAME:
                panelMenu.SetActive(false);
                Instantiate(playerPrefab);
                Instantiate(ballPrefab);
                break;
            case Status.FINISH:
                break;
        }

    }
}

GameManagerの各public変数にプレハブとパネルをセット

メニューのボタンをクリックした時にゲームマネージャーのクリック関数が実行されるようにします。

これでとりあえず、ゲーム開始で「メニュー」が出てきてスタートボタンを押したら「ゲーム」への移動するのが実装できました。

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