何となくenum型を誤解している気がしたので、簡単に説明します。
enum型は特に指定しなければint型と同じ処理をされます。つまり、
csharp
1 public enum AttackMove
2 {
3 shotoneway ,
4 shotthreeway ,
5 shotallway
6 };
7 public AttackMove attackMove;
8 void Update () {
9
10
11 switch (attackMove)
12 {
13 case AttackMove.shotoneway:
14 shotone();
15 break;
16 case AttackMove.shotthreeway:
17 shotthree();
18 break;
19 case AttackMove.shotallway:
20 shotall();
21 break;
22 }
23 }
このコードは、
csharp
1
2 public int attackMove;
3 void Update () {
4
5
6 switch (attackMove)
7 {
8 case 0:
9 shotone();
10 break;
11 case 1:
12 shotthree();
13 break;
14 case 2:
15 shotall();
16 break;
17 }
18 }
これと同じ動きです。
enum型は数字に名前を付けられる機能なのです。
この状態のコードならどこか別の場所で
attackMove = 1;とすればshotthree();に行くのが分かると思います。
なのでそれをenumに戻してあげると、
attackMove = AttackMove.shotthreeway;とすればshotthree();に行くという事になります。
これが分かれば、AttackMove.shotoneway=1というコードは不可能という事が分かります。
enumはただ数字に名前を付けただけですので、このコードは
1=1という意味になってしまいます。
またenumは数字なので、intとかと相互にキャストすることが出来ます。
csharp
1int num = 1;
2AttackMove move = (AttackMove)num;
3num = (int)move;
こういうことが出来ます。これを使うと次のような書き方ができますが、
csharp
1if(timer % 5 == 0)
2{
3 int current = (int)attackMove; // enumをintにキャストする
4 current += 1; // 1足す
5 if (current >= 3) current = 0; // AttackMoveは0,1,2しかないので3になったら0に戻す
6 attackMove = (AttackMove)current; // intをenumに戻す
7}
もしenumの数が増減した場合危険ですのでやめましょう。
(推奨するかの様な書き方でしたので編集しました。)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/01 11:52
2018/08/01 13:29