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

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

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