・文法編:列挙 から
・ゲーム開発編:p.156 列挙型を利用して野菜の種類を表す型を作ろう から
文法編:列挙
・列挙のメンバの持つ整数値を用いるにはint型にキャストする ・列挙を型とする変数を定義できる(つまり、ユーザ定義型の変数になる) ・この変数にはメンバを代入でき、インクリメントなどの整数演算が可能 ・この変数をDebug.Logすると、メンバ名が表示される ・列挙を型とする変数の保持する整数がメンバ数を超えても良いが、この変数をDebug.Logすると、メンバ名の代わりに整数値が表示される ・列挙を型とする変数の保持する整数が負の数になったり、該当するメンバが定義されていない場合も同様
演習 ex0810a.cs 列挙の基礎
・上記の例の列挙seasonを定義し、列挙を型とする変数を試そう
作成例
using UnityEngine;
public enum season { spring, summer, fall, winter };
public class ex0810a : MonoBehaviour {
void Start() {
Debug.Log(season.spring); //"spring"を表示
Debug.Log((int)season.spring); //0を表示
season now = season.summer; //列挙を型とする変数を定義し、列挙メンバを代入(初期化)
Debug.Log(now); //"summer"を表示
now++; //列挙を型とする変数は整数演算が可能
Debug.Log(now); //"fall"を表示
now += 10; //列挙を型とする変数の保持する整数がメンバ数を超えても良い
Debug.Log(now); //メンバがないので、代わりに整数値(12)を表示
now -= 20; //列挙を型とする変数の保持する整数がメンバ数を超えても良い
Debug.Log(now); //メンバがないので、代わりに整数値(-8)を表示
}
}
文法編:列挙の例
・UnityではKeyCodeなどが列挙型として提供されており、キーボードの全キーと、ジョイスティックのボタンなどが、 メンバとして定義されている https://docs.unity3d.com/ja/2021.2/ScriptReference/KeyCode.html ・例: Debug.Log((int)KeyCode.Escape); ⇒ 27 ・C#でもConsoleColorなどが列挙型として提供されており、デバッグコンソールで表示可能な色名が、メンバとして定義されている https://learn.microsoft.com/ja-jp/dotnet/api/system.consolecolor
文法編:列挙の応用
・バラバラの整数値をグループ化して列挙にまとめる場合も多い
例: enum player { height = 100, weight = 200, speed = 10, size = 50 };
・「= 値」による指定は途中で行ってもOK
例: enum prime { two = 2, three, five = 5, seven = 7 }; //1桁の素数
ゲーム開発編:p.156 列挙型を利用して野菜の種類を表す型を作ろう
・① Assetsにある「tomato」をクリック ・②「Open Prehub」ではなく「Open」ボタンをクリック ・複数のコンポーネントが開いていて見づらければ「Sprite Renderer」「Regitbody2D」の▼をクリックして窓を閉じると良い ・③「Add Component」「New Script」をクリック ・④「Name」に「Vegetable」と入力し「Create and Add」をクリック ・⑤「Vegetable(Script)」の右の「:」「Edit Script」 ・⑥ Visual StudioでVegetable.csのソースを入力し「ファイル」「すべて保存」 ・⑦ Unityに戻る
p.158(続き)
・①「Vegetable(Script)」の下にパブリック変数「Type」ができており、値が「Tomato」になっていること、 ▼を押すと4種類から選択可能なことを確認 ・②「Scenes」をクリックして編集完了 ・③ Assetsにある「Gpepper」をクリックし、パブリック変数「Type」を「Gpepper」に変更 ・④ Assetsにある「Broccoli」をクリックし、パブリック変数「Type」を「Broccoli」に変更 ・⑤ Assetsにある「Potato」をクリックし、パブリック変数「Type」を「Potato」に変更 ・⑥「Scenes」をクリックして編集完了
p.159(続き)
・① Assetsにある「Broccoli」をシーン上の適当な位置にドラッグ&ドロップ ・② Assetsにある「Gpepper」をシーン上の適当な位置にドラッグ&ドロップ ・③ Assetsにある「Tomato」をシーン上の適当な位置にドラッグ&ドロップ ・④ プレイボタンを押して動作を確認 ・⑤「File」「Save」で保存 ・⑥ シーン上に配置した野菜の4つのインスタンスをクリック&Deleteで削除する
p.157 Vegetable.cs
using UnityEngine;
public class Vegetable : MonoBehaviour {
public enum Type { //Type列挙型の定義(外部から利用可)
Tomato, Gpepper, Broccoli, Potato //Type列挙型のメンバー
}
public Type type; //Type列挙型を型とする変数typeの宣言(外部から利用可)
}