enum関数のお勉強
enum
数字の代わりに名前を付けられるイメージ
変数じゃなくて、中身の変わらない定数にしか使えない。
こんな感じで宣言する
最後のカンマはあってもなくてもエラー出なかった。
公式では付けてないけど、上の侍エンジニア記事では最後にカンマ付けてた。
enum キーワード - C# リファレンス | Microsoft Docs
変数を作る
自分で作ったenum型?で変数を定義できる。
intとかGameObjectみたいな場所に自分で作った型を書くの初めてで、最初は戸惑った。
publicにしたらインスペクタで選ぶことができる!!
enumを==で判別する
if(nowroom==roomname.bed)
みたいにする。nowroom==bedだとだめだった。
数値は0しか入れられない?
enumで設定した変数に初期値を設定するときに、roomname.pianoみたいな文字じゃなくて、配列のように数値を入れてみた。
private roomname firstroom=0;
すると0のときはうまくいったのに、それ以外の数字を入れたらエラーが出た。
Cannot implicitly convert type `int' to `enumtest.roomname'. An explicit conversion exists (are you missing a cast?)
intをenumに変換できませんだって。
ふつうはちゃんと名前で指定するものなんだろうけど、逆になんで0ではエラーが出ないんだろう。
公式のリファレンスには最初の値が0で、1ずつ増えていくって書いてるから、数値としては正しいはず。
既定では、最初の列挙子の値は 0 で、後続の列挙子の値は 1 ずつ増加していきます。 たとえば、次の列挙型では、 Sat は 0、 Sun は 1、 Mon は 2などとなります。
追記
アドバイスいただきました。
private roomname firstroom=(roomname)1;
としたら通りました!
あと、数字を0から始めたくない場合は、最初の宣言の時に、
public enum roomname { bath=1,bed,piano }
みたいに最初の列挙子に始めたい数字を入れたらいいそうです。
private roomname firstroom=(roomname)1;
— とりカシュ (@torikasyu) May 23, 2019
みたいにキャストすればいいはず。というか0で通るんだ・・
あと0から始めたくないときは
public enum EnumMode
{
none = -1,
playing,
gameover
}
みたいなかんじ
こまめにブログ書いてて尊敬です。。
ありがとうございます!
switch
enumはswitch文とよく一緒に使うらしい。
最後に
用語の使い方は間違ってると思うけど、大体理解できた。
業務でUnityを使い始めたので、これからこういう系の記事増えるかも!