Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity C#枚举,不支持的类型错误_C#_Unity3d - Fatal编程技术网

Unity C#枚举,不支持的类型错误

Unity C#枚举,不支持的类型错误,c#,unity3d,C#,Unity3d,在统一C#中, 此枚举代码仅在运行时在控制台上出错 [System.Flags] private enum ActionSet : long { Sit = 0x0000000000000001, Stand = 0x0000000000000002, Walk = 0x0000000000000004, Sleep = 0x0000000000000008, Run = 0x0000000000000010,

在统一C#中,
此枚举代码仅在运行时在控制台上出错

[System.Flags]
private enum ActionSet : long
{
    Sit      = 0x0000000000000001,
    Stand    = 0x0000000000000002,
    Walk     = 0x0000000000000004,
    Sleep    = 0x0000000000000008,
    Run      = 0x0000000000000010,
    Happy    = 0x0000000100000000,
    Sleepy   = 0x0000000200000000,
    Gloomy   = 0x0000000400000000
}
错误是:

不支持枚举类型“Character.ActionSet”用于类“Character”中的字段“blrah blrah”

Unity C#仅支持int类型?

使用此代码没有问题吗?

问题在于Unity的枚举序列化程序。 一些可能的解决办法:

  • 使用[NonSerialized]属性

  • 将值存储在基础类型中(在示例中为long)


正如前面提到的,Unity的枚举序列化程序只需要32位的值


您是否检查了系统?
long
数据类型可能不受支持。尝试切换到
int
,或者您能解释一下
long
的用例吗?谢谢。我将上8位和下8位逻辑分离为一个状态变量。现在我明白了。我将它分为两个整数。有关于unity的枚举支持类型的正式文档吗?据我所知,Unity3D枚举类型应该与.NET 2.0兼容。NET2.0完全没有这个问题。将枚举拆分为多个枚举或使用带有const的静态类可能是阻力最小的路径。很抱歉发布另一条评论,但如果您有枚举类型的成员变量,则似乎会出现问题;如果您有枚举类型的局部变量,则不会出现问题。这似乎有点奇怪。与其链接到其他地方,不如把正文放在这里。@AlBlue是的,但如果他读了,整个讨论可能会给他一个更好的背景和理解。这个答案更有可能被否决或删除,由于最初的提问是在2019年10月,我不确定它现在是否会被阅读——当论坛消失或帖子丢失时,这个答案将不会增加任何价值。@AlBlue,那么它是否在身体里就不重要了。我建议在链接文本中使用ulong,链接只是为了获取更多信息。我让他们自己决定:)。如果这被删除或否决,我不会哭,只是分享我知道的lol。我很抱歉你有这种感觉-我试图帮助解释为什么答案可能会被否决,以及只有链接的答案在这个网站上不是首选的事实。有关详细信息,请参见示例或。