Unity

【Unity】キャラクター選択画面の作り方【C#のPlayerPrefsやListも同時に学ぶ】

本記事内には、アフィリエイトリンクを含む場合があります

ゲームを作っていると 
プレイするキャラクター(以下、プレイヤブルキャラクター)を
変更したり、選択してからゲームを始められる
ことを実装したくなるものです。

本記事では、
そんなプレイヤブルキャラクターを選択する画面(シーン)の作り方を
すぐにマネできる形で、シンプルに解説します。

内容にそって作業すれば、このようなシーンが完成します↓

また、これを実装するのに、
C#の「PlayerPrefs」「List」を使うので、
それらの使い方も同時に学べると思います^^

【おすすめ】キャラクター選択画面の実践編↓

1. シーン準備

まずは、シーンの準備から。

Scenesフォルダに、
キャラクター選択シーンとして「SelectScene」
そのあと移行するシーンとして「GameScene」
と名付けた2つのシーンを作成します。

それでは、それぞれ詰めていきしょう。

2. SelectSceneの作成

2ー1. キャラクターボタンとスタートボタンの作成

キャラクター選択シーンでのUIの設計です。

キャラクターごとに、UIからButtonを配置していきます。

Buttonの配下にImageを作成し、
その「Source Image」はキャラクターのテクスチャファイルを紐付けます。

画像ファイルをUnityで使えるテクスチャファイルに変換する方法
①Assetsフォルダ内に画像ファイルをドラッグ&ドロップ
②画像ファイルをクリックし、「Inspecter」の「Texture Type」にて「Sprite(2D and UI)」を選択し、「Apply」を押します。

Buttonの「SelectedColor」を目立つ黄色に設定します。

「OnClick()」の「+」を押して
スクリプトのメソッドを紐付けます。
(これはスクリプト作成後なので後回しでOK)

さらに、スタートボタンを真ん中あたりに作り、
選択したキャラクターで
ゲームを開始させられるようにします。

2−2. スクリプト作成

Assetsフォルダ内で「CharacterSelect.cs」と名付けたC#スクリプトを作成します。

シーンに、空のゲームオブジェクトを作成し、そこにこのスクリプトをアタッチします。

スクリプトの内容は以下の通り。

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

public class CharacterSelect : MonoBehaviour
{
   int selectCharaNumber;

   void Start()
   {
        selectCharaNumber = 0;
   }

   public void OnClickA()
   {
        selectCharaNumber = 0;
   }
   public void OnClickB()
   {
        selectCharaNumber = 1;
   }


   public void OnClickStart()
   {
        PlayerPrefs.SetInt("CHARA_NUMBER",selectCharaNumber);
        SceneManager.LoadScene("GameScene");
   }
}

 

たったこれだけのスクリプトです^^;

解説すると、
selectCharaNumberにキャラクターに対応した番号を代入する仕組みで、
その番号をPlayerPrefsでローカルデバイスに保存し、次のシーンに移行します。

前の図のOnClickの部分のように、各キャラクターボタンを押したときに
OnClickA()やOnClickB()というメソッドが呼び出されるように、紐付けます。
(CubeのButtonはOnClickA()、SphereのButtonはOnClickB())

また、スタートボタンを押したときには、
OnClickStart()が呼ばれるように紐付けます。

PlayerPrefs.SetInt("CHARA_NUMBER", selectCharaNumber);

このコードによって、"CHARA_NUMBER"というKeyで、キャラクターの番号をValueとして、保存させます。

そのあと、SceneManager.LoadSceneで"GameScene"に移行できるようにします。

 

3. GameSceneの作成

3−1. プレイヤブルキャラクターの準備

ひとまずプレイヤブルキャラクターを準備する必要があります。

ABOUT ME
いなも@システマライフハッカー
”仙豆”を開発することを夢見て、健康食品会社で働いていたものの、2016年に出会ったロシアの武術”システマ”こそ、その糸口があると感銘し、勝手にシステマ普及活動を始める。 一方で、クリエイティブなモノ作りが好きで、DX社会で楽しみを見出せる"Unity”を活かして、”スマートかつ快適な暮らし”のヒントを発信している。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA