Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Unity開発】enum(列挙型)まとめ【ひよこエッセンス】

Unity5.0.0f4 Personal(2015年5月)

 

f:id:hiyotama:20150504205926p:plain

 

ひよこエッセンスの時間です〜

今回はUnityの勉強をしているとたまに出てくる、enumについて解説していこうと思います〜

 enum(列挙型)まとめ

①enumとは

C#をろくに勉強せずにUnityをはじめたので、よく分からないけど何度も出てくる記述が多々あります〜そのうちのひとつがenumだったので、今回色々と調べてみました〜

 

enumというのは列挙型と呼ばれる変数の型です〜いくつかの文字列をひとまとめにして扱う感じです〜

 

メリットとしては、指定した文字列以外は絶対に入ってこないので用途が限定され間違いが起きにくくなる、ソースの可読性が上がるといった点が上げられます〜

 

小さなプログラムを一人で作る上では特別必要はないけど、大規模なプログラムを複数人で使う時なんかに威力を発揮するようです〜

 

②enumの具体例1

具体的に見ていきましょう〜まずはUnityのProjectを作成しCubeを作り、以下のenumを使ったソースを取り付けます〜

 

 

enumを使う時、まずはenumクラスを用意します〜enumで指定する文字列は定数(絶対に変わらないデータ)なので、そして定数は全て大文字という慣習があるので、全て大文字で書くといいと思います〜

 

enumクラスで文字列を列挙したあと、別途変数の宣言が必要です〜

今回はpublicで宣言したので、Inspectorビューからenumを選択することができます〜

 

f:id:hiyotama:20150526102021p:plain

Inspectorビューから指定可能

 

次にStartメソッドにてSwitch文を使い、条件分岐しています〜enum型の文字列にアクセスするためには、「enumクラス名.列挙した文字列」と記述します〜

 

それでは実行してみましょう〜すると、以下のようなデバッグ結果が表示されます!

 

f:id:hiyotama:20150526101526p:plain

デフォルトだと一番上のADDの結果が出力される

 

Inspectorビューでenumを変更すると、デバッグ結果も変わります〜MULに変えて実行すると・・・

 

f:id:hiyotama:20150526102526p:plain

MULに変更した結果、掛け算が表示される

 

③enumの具体例2

 同じように次のソースをCubeに貼り付けて下さい〜

 

 

enumは、内部にint型を指定することができます〜今回の例では一番上の文字列に1を指定し、2番めに2、3番目に3と自動的に指定されています〜

キャストを使えばこのint型を取得することができます〜

 

 Updateメソッドに入ります〜

 

1番目の処理では、列挙した文字列を取得しています〜

デフォルトの状態だと内部定義(int)=0が取得されますが、今回は一番最初に列挙した文字ATTACKを1に設定したので、そのまま実行すると何も表示されません〜

ですので、Inspectorビューから選択する必要があります〜

 

f:id:hiyotama:20150526104521p:plain

Inspectorビューから指定して出力内容を変更する

 

2番目の処理では、enum型で定義した文字列の数を表示しています〜今回は4つ定義したので、4が帰ってきます〜

 

f:id:hiyotama:20150526104629p:plain

文字列数の4が表示される

 

3番目の処理では、列挙した文字列をforeach文を使い全て取得し、表示しています〜

「Enum.GetValues(typeof(enumクラス))」で文字列を取得することができます〜

ちなみにEnum(C#デフォルトのenumクラス。頭文字が大文字)を使うためには、ソースの先頭に「using System」を記述する必要があるので、ご注意下さい〜

 

f:id:hiyotama:20150526105606p:plain

 

4番目の処理は、引数にenumを指定してメソッドを呼び出しています〜

呼び出すほうはenumクラス.文字列を、受け取るほうはenumクラスを記述します〜

 

f:id:hiyotama:20150526105248p:plain

引数指定も可能

 

ちなみに上の例ではint型へのキャストを行い、内部定義された数値も表示しているので、このように活用するということで、よろしくお願いします〜

 

以上、ひよこエッセンスでした〜

ありがとうございました〜