Unity の [Inspector]ウィンドウには変数の値を入力するためのフィールドやスライダーバーが表示できて便利ですが、ドロップダウンリストを表示するには?
調べると、 定数を使うとドロップダウンリストを表示できることが分かりました。具体的にはスクリプトで enum を使って列挙型を宣言するということなので、実際に試してみました。
そもそも列挙型って何?
列挙型(enum)とは、複数の変数に一連の整数値を付けると便利な場合に使用します。
列挙型で定義される変数はメンバと言います。デフォルトでは定義されたメンバの順に0(ゼロ)から整数値が付けられます。最初の値を0(ゼロ)以外で定義することも可能です。
また途中のメンバから付けられる整数値を変えることもできます。
出典:【C言語入門】列挙型(enum)の使い方 侍エンジニア塾ブログ – プログラミング入門者向けサイト
列挙型で定義される変数はメンバと言います。デフォルトでは定義されたメンバの順に0(ゼロ)から整数値が付けられます。最初の値を0(ゼロ)以外で定義することも可能です。
また途中のメンバから付けられる整数値を変えることもできます。
出典:【C言語入門】列挙型(enum)の使い方 侍エンジニア塾ブログ – プログラミング入門者向けサイト
ということで、変数をまとめて管理できるようです。
Inspector ウィンドウにドロップダウンリストを表示するサンプルコード
定数 = 値が変わらない変数、ということで、ゲーム実行中に値が変わらないシーンファイル名を使ってみることにします。トリガーコライダーコンポーネントと衝突したらシーンをロードするサンプルコードを作ってみました。
using System.Collections; using System.Collections.Generic; using UnityEngine; // シーン処理のクラスを使用する宣言 using UnityEngine.SceneManagement; public class SceneLoader : MonoBehaviour { // 列挙型の定義 public enum SCENE { Scene_A, Scene_B, Scene_C } // 列挙型の列挙値を格納する変数 public SCENE sceneName; // トリガーコライダーコンポーネントと衝突した場合の処理 private void OnTriggerEnter(Collider other) { // シーンのロード // 引数に列挙値を格納した変数 sceneName を文字列として指定 SceneManager.LoadScene(sceneName.ToString()); } }
今回のつまづき点
列挙型の列挙値を格納する変数の型を使用する値に合わせて変換する必要がある点です。サンプルコードでは列挙値を格納した変数 sceneName を ToString() で文字列に変換しています。
Inspector ウィンドウの表示
オブジェクトにスクリプトをアタッチすると、[Inspector]ウィンドウでこのように表示されます。
参考Webサイト
【Unity入門】1番簡単なenumの覚え方!綺麗なプログラムは定数から! 侍エンジニア塾ブログ(Samurai Blog) – プログラミング入門者向けサイト
この記事では「 【Unity入門】1番簡単なenumの覚え方!綺麗なプログラムは定数から! 」について、誰でも理解できるように解説します。この記事を読めば、あなたの悩みが解決するだけじゃなく、新たな気付きも発見できることでしょう。お悩みの方はぜひご一読ください。