【Unity】Enumはulong(64bit)に型指定したらシリアライズできない件について

Enum型は少し変な仕様があったので備忘録として。

ulong指定はダメ

Enum型は型指定できるのですがulong(64bit)だとなぜかシリアライズできないということがわかりました。

enum EnumShort: ushort
{
    A,
}

enum EnumULong : ulong
{
    A,
}

public class Sample : MonoBehaviour
{
    [SerializeField] EnumShort enumShort;
    [SerializeField] EnumULong enumULong;

    void Start()
    {
    }

}

これをインスペクターで確認すると・・・

short型は問題ないんですが、ulong型にすると表示されません。

というかエラー出てますね。。

結論としては64bit型のEnumはダメよということです。

お気をつけて!!

参考

64bitのenumはUnityでシリアライズ出来ない - Qiita

あとがき

普通は型指定する必要なんてないのでどうでもいいのですが、

Enumをビットフィールドとして使う場合に32bitだと心もとないから64bitにしようとすると今回の問題が起きるということです。

とはいえ経験論からいって32個もフラグを作ることなんてなかったけどね。