読者です 読者をやめる 読者になる 読者になる

いんでぃーづ

個人でゲーム開発してる上で吸収したモノたち紹介。UnityからGIMPまでなんでも。デザインとかゲーム論まで語っちゃうよ的なアレ。

MENU
{スポンサーリンク}

C#のEnumのtips

C# Tips Unity

System.Enum クラス のメソッドを使うことで、いろいろ便利なことができます。

例として下のenumを使います。

public enum Weapon {
    Sword,
    Ax,
    Spear,
    Bow
}

Enumの定義を文字列で取得する

enum型は内部的には数値なので、要素名をそのまま文字列として扱いたい場合は Enum.GetName メソッドで変換する必要があります。

// Enumの要素を文字列として取得
string name = System.Enum.GetName (
    typeof(Weapon),
    Weapon.Ax
);

Debug.Log (name);

Enumをforeachでループ処理

すべての要素を一度に 配列 として取得することもできます。
これなら for や foreach で扱うことができるので便利です。

GetValues メソッドで数値配列になり、GetNames メソッドだと文字列配列で取得できます。

// Enumの要素を文字列として取得
string[] names = System.Enum.GetNames (typeof(Weapon));

// すべての要素を出力してみる
foreach (string name in names) {
    Debug.Log (name);
} 

Enumの数

上記の配列取得を応用して、Enumの定義数を取得できます。

// enum の定義がいくつあるか
int count = System.Enum.GetValues (typeof(Weapon)).Length;

Unityでのenum

インスペクタでenumシリアライズすると、定義を変更しようとしたときにちょっと困ったことになるので注意です。

以下の過去記事参照

indie-du.com

*参考 https://msdn.microsoft.com/ja-jp/library/cc138362.aspx

Amazon.co.jpアソシエイト