今回は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」を入れます。

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

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