今回は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にアタッチしてプレハブをセット。
下記の様な感じで、選択したボールがゲーム画面に反映されます。
ただし、これは簡単な実装方法。選択するオブジェクト(ボール)を増やした時に修正忘れでバグが起きる可能性も。