この記事でのバージョン
Unity 5.4.0f3
はじめに
以前、定数を管理するクラスを作成するエディタ拡張という記事を書きました。
これはいわゆる定数クラスと呼ばれるクラスを生成するためのエディタ拡張です。
これ単体だとあまり意味はありませんが、
何かしらのファイルを監視し、変更があった時に定数を更新する
みたいな使い方をするとなかなか便利なものでした。
今回はそれのenumバージョンのご紹介!
場合によっては定数ではなくenumの方が都合が良い場合もあると思い、作成しました。
EnumCreator
さっそくコードです。
使い方は以下のようにEnumCreator.Createで各引数を指定して実行するだけです。
//Enumの項目をstringでまとめる List<string> itemNameList = new List<string> () { "Hoge", "Hage", "Age", "NagaiNamaeNoAitemu" }; //Enum作成 EnumCreator.Create ( enumName :"TestEnum", //enumの名前 itemNameList :itemNameList, //enumの項目 exportPath :"Assets/TestEnum.cs",//作成したファイルのパスをAssetsから拡張子まで指定 /*以下は省略可能*/ summary :"さまりー", //enumの説明 nameSpace :"Test", //nameSpaceの名前 isFlags :true //Flag属性を付けるあどうか );
上記のコードで生成したTestEnum.csは以下の通りです。
namespace TestEnum{ /// <summary> /// さまりー /// </summary> [System.Flags] public enum TestEnum{ Hoge = 1 << 0, Hage = 1 << 1, Age = 1 << 2, NagaiNamaeNoAitemu = 1 << 3, } }
また、省略可能な3つの引数を省略して生成した場合は以下の通りです。
public enum TestEnum{ Hoge = 0, Hage = 1, Age = 2, NagaiNamaeNoAitemu = 3, }
さらに、Enumの項目とその数値をDictionaryで指定して作成することも可能です。
//Enumの項目をstring、その数値をintでまとめる Dictionary<string, int> itemDict = new Dictionary<string, int> () { {"Hoge", 0}, {"Hage", 15}, {"Age", 40}, {"NagaiNamaeNoAitemu", 123456789} }; //Enum作成 EnumCreator.Create ( enumName :"TestEnum", //enumの名前 itemDict :itemDict, //enumの項目 exportPath :"Assets/TestEnum.cs", //作成したファイルのパスをAssetsから拡張子まで指定 /*以下は省略可能*/ summary :"さまりー", //enumの説明 nameSpace :"Test" //nameSpaceの名前 );
上記のコードで生成したTestEnum.csは以下の通りです。
namespace Test{ /// <summary> /// さまりー /// </summary> public enum TestEnum{ Hoge = 0, Hage = 15, Age = 40, NagaiNamaeNoAitemu = 123456789, } }
省略可能な2つの引数を省略して生成した場合は以下の通りです。
public enum TestEnumDict2{ Hoge = 0, Hage = 15, Age = 40, NagaiNamaeNoAitemu = 123456789, }
なお、既に同名のファイルがある場合は上書きされるので、注意が必要です。