キャラクターの選択画面を簡単に作ってみる|Unityゲーム制作

今回はUnityで「キャラクターの選択画面」を簡単な方法(簡易的なもの)で実装してみます。

はじめに

「Unity 2022.3.14f1」ヴァージョンで作成しています。

複数のキャラクターを用意

キャラクターではないですが、以前作成したボールをキャラクターとして利用します。

色を変更した下記4つの画像を利用していきます。

Unityに取り込みます。自分で作成した画像やフリー画像など、なんでもOKです。

取り込んだ画像の「PixelsPerUnit」、「FilterMode」を変更しておきます。

実装開始

「ゲーム画面」と「キャラクターの選択画面」を作成し、キャラクター選択画面で選んだキャラがゲーム画面に反映されるように実装します。

キャラクター選択画面を作成

まずは簡単なキャラクター選択画面を作成します。「UI」→「Legacy」→「Text」を追加。分かりやすくタイトルをつけておきます。

ヒエラルキーメニューに画像を一つ追加します。

「UI」→「Legacy」→「Button」を追加、ボタンの位置とボタンのテキストを変更します。

下記のように右矢印ボタンにします。

同じように「左矢印ボタン」と「Applyボタン」を追加します。

ボールの画像を全てプレハブ化します。

空のオブジェクトを追加し、名前をBallsにします。配下にボールのプレハブを全てを追加します。

スクリプトの作成

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

using UnityEngine;
using UnityEngine.SceneManagement;

public class Select : MonoBehaviour
{
    [SerializeField] private GameObject[] balls;
    private int index = 0;

    void Start()
    {
        index = PlayerPrefs.GetInt("BallIndex", 0);
        balls[index].SetActive(true);
    }

    public void Right()
    {
        balls[index].SetActive(false);
        index++;

        if (index >= balls.Length)
            index = 0;
        balls[index].SetActive(true);
    }

    public void Left()
    {
        balls[index].SetActive(false);
        index--;

        if (index < 0)
            index = balls.Length - 1;
        balls[index].SetActive(true);

    }
    public void Apply()
    {
        PlayerPrefs.SetInt("BallIndex", index);

        SceneManager.LoadScene("GameScene");
    }
}

ボールを有効/無効で切り替え、PlayerPrefsを利用して選択したボールを保存してます。

スクリプトをBallsに追加して、パラメータにボールをセットします。

ボタンを押した時にそれぞれのメソッドを呼び出すようにします。下記は右ボタンに割り当てています。左ボタン、APPLYボタンも同様に割り当てます。

初期では全てのボールのプレハブを無効にしておきます。

ゲーム画面

ゲーム画面を簡単に作成します。「UI」→「Legact」→「Text」と「Button」を追加します。

テキスト内容などを変更して下記のような感じにします。

空のオブジェクトを追加し「LoadBall」に名前を変更しておきます。

スクリプトを作成

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

using UnityEngine;
using UnityEngine.SceneManagement;

public class LoadBall : MonoBehaviour
{
    [SerializeField] GameObject[] ballPrefabs;

    void Start()
    {
        int index = PlayerPrefs.GetInt("BallIndex", 0);
        GameObject ballobj = ballPrefabs[index];
        Instantiate(ballobj, transform.position, Quaternion.identity);
    }
    public void BallSelect()
    {
        SceneManager.LoadScene("SelectScene");
    }
}

PlayerPrefsに保存したボール情報を呼びだし、該当するボールのプレハブを生成しています。

LoadBallにスクリプトを追加して、パラメータにプレハブをセットします。

BallSelectボタンに割り当てます。

BuildSettingsに「GameScene」と「SelectScene」を入れます。

実行すると、下記の様な感じで、選択したボールがゲーム画面に反映されます。

ただし、これは簡単な実装方法です。ボールを増やした時に修正忘れでバグが起きる可能性も。

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