簡単なキャラクター選択画面を作ってみた【Unity】

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

はじめに

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

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

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

色を変更したものを3つ用意。

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

実装開始

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

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

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

取り込んだ画像のPixelsPerUnit、FilterModeなどを変更。

ヒエラルキーメニューに画像を追加。

UI→Buttonを追加。

ボタンを右矢印にします。

同じように左矢印とセレクトボタンを追加。ここは決定ボタンでも良かったかも。

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

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

下記スクリプトを作成、Ballsオブジェクトにアタッチしておきます。

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

public class BallSelect : MonoBehaviour
{
    [SerializeField] private GameObject[] _ball;
    private int _selected = 0;

    void Start()
    {
        _selected = PlayerPrefs.GetInt("BallSelect", 0);
        _ball[_selected].SetActive(true);
    }

    public void Right()
    {
        _ball[_selected].SetActive(false);
        _selected++;

        if (_selected >= _ball.Length)
            _selected = 0;
        _ball[_selected].SetActive(true);
    }

    public void Left()
    {
        _ball[_selected].SetActive(false);
        _selected--;

        if (_selected < 0)
            _selected = _ball.Length - 1;
        _ball[_selected].SetActive(true);

    }
    public void SelectBall()
    {
        PlayerPrefs.SetInt("BallSelect", _selected);

        SceneManager.LoadScene("GameScene");
    }
}

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

ボタンを押した時にそれぞれのメソッドを呼び出すようにします。

初期では全てのプレハブを無効に。

ゲーム画面

ゲーム画面を作成。UIからテキストとボタンを追加。空のオブジェクトを追加しLoadBallとしておきます。

下記スクリプトを作成。

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

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

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

}

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

LoadBallにアタッチしてプレハブをセット。

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

ただし、これは簡単な実装方法。選択するオブジェクト(ボール)を増やした時に修正忘れでバグが起きる可能性も。

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