講義メモ

・文法編:列挙 から
・ゲーム開発編: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の宣言(外部から利用可)
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です