UnityのC#スクリプトで使える列挙型「enum」の活用方法を紹介します。
enumは必ずしも活用しなくともC#スクリプトを書く事を可能ですが、enumを活用する事でコードを綺麗に記載する事ができます。また、列挙型で記載する事の変数の情報を整理しやすくする事ができます。
また、enumは他の方もよく活用されると思うので、他の方のコードを参考にする際にも意味を分かっていると、理解が進みやすいと思います。
コンテンツ
列挙型「enum」の活用方法
それではUnityでの列挙型「enum」の活用方法について紹介します。
UnityのC#スクリプトとして使えるenumには主に以下の様な役割があります。
- enumを使うと複数の定数を綺麗に設定できる
- 定数は基本的に整数値で整数型であれば、自分で指摘できる
- 変数情報をデータベース的に活用できる
※データベース化する方法についてはまた改めて詳しく紹介します。
これらの役割について詳しく説明します。
列挙型「enum」で定数を指定する
列挙型「enum」で定数を指定してみたいと思います。
enumで定数を指定する際は以下の様に記述します。
■C#スクリプト
1 2 3 4 5 6 |
public enum EnumSampleType1 { sample1_1, // 0 sample1_2, // 1 sample1_3, // 2 } |
変数のコメント欄に記載していますが、実際の値としては整数値(0、1、2、・・・)が順番に設定されていきます。
ただ、コーディングする際はこれらの数値情報を意識する必要はありません。定数の情報だけを意識すればオッケーです。
定数の値(整数)を指定したい場合
各定数の値を指定する事もできます。
以下の様に「=」で値を設定すれば、その値が設定されます。ただし、設定できるのは整数と覚えておきましょう。
■C#スクリプト
1 2 3 4 5 6 |
public enum EnumSampleType1 { sample1_1 = 1, sample1_2 = 2, sample1_3 = 3, } |
定数の型を指定したい場合
整数値の型は指定する事も可能です。
例えばushortの型を指定したい場合は以下の様な記述にすればOKです。
■C#スクリプト
1 2 3 4 5 6 7 |
//ushort型 public enum EnumSampleType2 :ushort { sample2_1 = 100, sample2_2 = 200, sample2_3 = 300, } |
使用できるのは基本的に整数値の型のみ
型を指定する際には一つ注意点があります。
enumで使用できる整数の型は「byte、sbyte、short、ushort、int、uint、long、ulong」のみになります。
これ以外の型を指定すると、以下の様に「CS1008」のエラーが出力されるはずです。
■「CS1008」エラーが出力される
文字列等を使いたい場合は、別途変換処理をする必要があります。
ログ出力するC#スクリプトを作成
これまでに列挙型で指定した定数をログ出力してみましょう。
以下の様なスクリプトを作成して、空のオブジェクトにアタッチします。
■C#スクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnumSample : MonoBehaviour { public enum EnumSampleType1 { sample1_1, // 0 sample1_2, // 1 sample1_3, // 2 } //ushort型 public enum EnumSampleType2 :ushort { sample2_1 = 100, sample2_2 = 200, sample2_3 = 300, } //列挙型変数をpublicで宣言する事でエディタから指定可能 public EnumSampleType1 type1; public EnumSampleType2 type2; void Start() { //列挙型の値をtype1~3に設定 type1 = EnumSampleType1.sample1_1; type2 = EnumSampleType2.sample2_2; //ログ出力 Debug.Log(type1); Debug.Log(type2); } void Update(){} } |
C#スクリプトの実行結果
上記のスクリプトをアタッチしてゲームを再生すると以下の通りログ出力されます。
ログ結果として列挙型の名称が設定されている事が分かります。
■ログ出力される
Unityエディタ上の表示
列挙型で指定した値がUnityエディタ上でどのように表示されるか確認してみましょう。
■Unityエディタ上の列挙型
Type1、Type2を見てみるとドロップダウンリストの様になっている事が分かります。
※Type1、Type2の値は定数なので、リストから選択する形になります。
■ドロップダウンリストになっている
列挙型を活用する事でデータベース的に使う事ができる
列挙型「enum」で指定した定数をデータベース的に活用する事も可能です。
今回の例で言うと、Type1、Type2だけでなくて、Type3、4、5・・・と複数の項目を増やしていく事で、簡易的なデータベースの様に扱う事も可能です。
ゲームの中でアイテムやステータスの様に様々な情報をまとめて管理したい場合にも便利です。
まとめ
UnityのC#スクリプトで列挙型「enum」を活用する方法について紹介しました。
enumを活用することで、コードの可読性が向上しますし、変数を定数化することで情報を整理しやすくなります。
一度分かってしまえばすごく簡単に使いこなせますので、ぜひ使いこなしてみて下さい。