【C#入門】列挙型(Enum)とは?基本的な使い方

C#入門列挙型(Enum)の基本的な使い方
目次

Enumとは?

列挙型(Enum)とは、名前がついた定数の集まりです。

曜日など、特定の値しか取らないデータを何度も使うときに便利な変数型で、多くの場合switch文と組み合わせて使われます。

曜日をEnumで定義する例

例えば、曜日をEnumを使って定義するならこのようになります。

enum Day
    {
        Monday,
        Tuesday,
        Wednesday,
        Thursday,
        Friday,
        Saturday,
        Sunday
    }

    Day day = Day.Sunday;

Monday〜Sundayの定数を集めた曜日の列挙型Dayを定義しています。

宣言したenumはデータ型として使用できるので、Day型で宣言した変数dayにSundayを代入することができます。

Enumを使うメリット

Enumを使うことで、プログラム内のデータが管理しやすくなるメリットがあります。

ゲーム制作の場合だと、ゲームでは「状態」を管理するケースがよくあります。

「状態」はプレイヤーの状態ステータス(毒、麻痺、石化など)だったり、キャラクターのジョブ(勇者、戦士、魔法使いなど)だったりします。

これらの「状態」は一つづつ変数で定義しても問題はありませんが、プログラムが読みにくくなり不便な面があります。

Enumを使うことで、ゲーム内のデータが管理しやすくなるので便利ですよ!

Job型の列挙型を定義した例

簡単な使用例

キャラクターのステータス状態(毒、麻痺、石化、通常状態)を管理する例を見てみましょう。

Unityを使う場合を想定して書いています。

Enumを使わず変数で書いた例

まず、Enumを使わず変数で書いたコードを見てください。

using UnityEngine;

public class StatusCondition : MonoBehaviour
{
    int condition = 1;

    void Start()
    {
        switch (condition)
        {
            case 0:
                Debug.Log("毒状態");
                break;
            case 1:
                Debug.Log("麻痺状態");
                break;
            case 2:
                Debug.Log("石化状態");
                break;
            default:
                Debug.Log("通常状態");
                break;
        }
    }
}

// 出力結果:麻痺状態

この例では、int conditionが0か1か2かそれ以外でそれぞれに対応する状態異常に振り分けています。

これでも問題はありませんが、状態異常の種類が多くなると「2番は何状態だったっけ?」と混乱しやすいです。

Enumを使って書いた例

そこで、Enumを使って書き換えるとこのようになります。

using UnityEngine;

public class StatusCondition : MonoBehaviour
{
    public enum Condition
    {
        Poisoned,
        Paralyzed,
        Stoned
    }

    Condition condition = Condition.Paralyzed;

    void Start()
    {

        switch (condition)
        {
            case Condition.Poisoned:
                Debug.Log("毒状態");
                break;
            case Condition.Paralyzed:
                Debug.Log("麻痺状態");
                break;
            case Condition.Stoned:
                Debug.Log("石化状態");
                break;
            default:
                Debug.Log("通常状態");
                break;
        }
    }
}

// 出力結果:麻痺状態

この例では、

public enum Condition
    {
        Poisoned,
        Paralyzed,
        Stoned
    }

で3つの状態異常をenumとして定義し、

Condition condition = Condition.Paralyzed;

でCondition型で宣言した変数conditionにParalyzedを代入しています。

このように、数字ではなく名前で指定して状態を管理できるので、混乱が少なく便利です。

おすすめ書籍

C#を学びたい初心者の方におすすめの書籍をご紹介します。実際に私が購入して良かった本です。

C#の絵本

いちばんやさしいC#の入門書」と帯にありましたが、とてもわかりやすくC#の全体をざっくり学べる本です。

絵本という通り、イラストで解説してくれているので、オブジェクト指向などイメージしにくい概念も理解しやすくなっています。

まるとこ

プログラミング初心者の私でも読みやすい本でした!

確かな力が身につくC#「超」入門

もう少ししっかり学びたい方にはこちらの本がおすすめです。

C#プログラムの書き方の基本からオブジェクト指向まで、やさしい文章とたくさんのイラストで丁寧に解説されています。

プロジェクトの新規作成からスクリーンショット付きでわかりやすく説明されていて、Windowsアプリケーション作成や練習問題を通してC#の基本を身につけることができます

Unity本のベストセラー、「Unityの教科書」と同じ著者の本で、どちらも大変わかりやすいです。

まるとこ

ゲームをイメージしたプログラミング例もあるので
ゲーム制作をしたい方にもおすすめです

まとめ

今回はゲーム制作に便利な列挙型(Enum)を紹介しました。

わかりやすいコードにしておくと、後から管理しやすいのでおすすめですよ!

まるとこ

配列すら使わずほぼ変数のみでゲーム作って後から管理が地獄になった私です…

少しでも皆様の制作の助けになれば幸いです、それでは!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次