TL;DL
// OK シリアライズされる
enum E{}
enum B : byte {}
enum SB : sbyte {}
enum S : short {}
enum US : ushort {}
enum I : int {}
enum UI : uint {}
// シリアライズされない
// Unsupported enum type 'BattlePlayer.Type' used for field 'type' in class 'BattlePlayer'
enum L : long {}
enum UL : ulong {}
説明
64bitのenumはC#ではサポートされていますが、Unityではシリアライズすることが出来ません。
故に、インスペクタで編集したり、シーンやプレハブに含めることも出来ません。
18446744073709551615個も列挙することなんてないだろ!と思われそうですが、問題はフラグとして使いたいときです。
1bitに1要素が入るわけですからlongでも64要素しか扱うことが出来ません。(それでも十分多い?)
解決策
生longとして
long, ulongはシリアライズできるので、キャストしてあげれば使えます。
因みにulongは内部的にはちゃんと0~18446744073709551615までシリアライズされますが、インスペクタ上では符号付数として表示されてしまうので注意が必要です。
インスペクタ拡張などでenumに出したいときはSystem.Enum.GetName
を使うことで、値から名前を逆引きできます。