Unity?C#? 列挙体

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
エンジン

Unity?C#? 列挙体

#1

投稿記事 by エンジン » 6年前

ずっとDXライブラリを触っていて、最近Unityにも手を出しました。

C++とUnity(C#?)では使い方が全然違うようで全く分かりません;

動かないし、分からんと書いたのでさんこうになるかわかりませんが…

コード:

public class enum_DIRECTION : MonoBehaviour {

     public enum DIRECTION {
        Invalid              // 0を格納
      , DIRECTION_DOWN       // 下向き(正面)
      , DIRECTION_DOWNLEFT   // 左下
      , DIRECTION_LEFT       // 左
      , DIRECTION_UPLEFT     // 左上
      , DIRECTION_UP         // 上
      , DIRECTION_UPRIGHT    // 右上
      , DIRECTION_RIGHT      // 右
      , DIRECTION_DOWNRIGHT  // 右下
    }
}

public class Player : MonoBehaviour {
    public enum_DIRECTION enum_direction = default(enum_DIRECTION);

    void Start() {
        enum_direction.DIRECTION = DIRECTION_DOWN; // エラー
    }
}
C#では継承もできないしtypedefも使えないみたいで、classにして扱うと調べたところにあったのでこの形にしました。

やりたいことはプレイヤースクリプトが呼ばれたときに正面向きであるDIRECTION_DOWNを設定したいです。

よろしくお願いします。

YuO
記事: 947
登録日時: 13年前
住所: 東京都世田谷区

Re: Unity?C#? 列挙体

#2

投稿記事 by YuO » 6年前

C#におけるenumはC++におけるenum classです。
つまり,型自体が名前空間になっています。
それに対して,Cのenumやenum classでないC++のenumは型が名前空間になっていません。

DIRECTION型の値を扱いたいのであれば,DIRECTION型として宣言します。
また,DIRECTIONI型の列挙値は,DIRECTION.DIRECTION_DOWNのように使います。
列挙型 (C# プログラミングガイド) | Microsoft Docs
列挙型 - C#によるプログラミング入門 | ++C++; // 未確認飛行 C
オフトピック
C#での名前は,Privateなフィールド (と引数・変数) を除いて,通常はPascal形式 (=単語の頭を大文字にして繋げる方式,先頭語も大文字) を使います。
なので,DIRECTIONではなくDirectionが一般的です。
大文字の使用規則 | Microsoft Docs | 大文字の使用規則(msdn.microsoft.com/VS8.5)

また,重複するPrefixは付けないのが一般的なので,Direction.Downのように定義します。
CA1712: Do not prefix enum values with type name | Microsoft Docs | CA1712: enum 値を型名のプレフィックスにしません(msdn.microsoft.com)

エンジン

Re: Unity?C#? 列挙体

#3

投稿記事 by エンジン » 6年前

C++でもenum型しか使ったことがなかったので、もう一度多言語も含めて勉強したいと思います><;

C#だと規則が違うのですね;
そちらも勉強したいと思います。

ありがとうございました。

返信

“C言語何でも質問掲示板” へ戻る