[英]Unity C# (Mono) enum fault
我正在定义此代码:
public enum ModelType {
R4,
W6,
W8,
W9,
X9
}
我在另一个脚本中使用此功能:
public void RequestModel(ModelType type, Size size) {
Debug.Log("Requesting " + type.ToString() + " at size " + size.ToString());
}
输出结果是:
Requesting 9 at size 4
如果我更改代码
Debug.Log("Requesting " + (int)type + " at size " + size.ToString());
我会得到相同的结果。 有人知道发生了什么吗?
我不得不说,我第一次写枚举是这样的:
public enum ModelType {
EX1,
EX2,
EX3,
EX4,
EX5,
EX6,
EX7,
R4,
W6,
W8,
W9,
X9
}
但是我摆脱了EX,因为我不再需要它们了。
我还尝试再次添加EX,并得到输出:
Requesting W8 at size 4 // if I use ToString()
Requesting 9 at size 4 // to print the enum value
没关系。
我真的不知道该怎么办。 我尝试重新导入所有内容,重新启动Unity和Visual Studio,但是如果删除EXes,则将无法正常工作。
有任何想法吗?
编辑:对不起,我忘记了在代码中我将函数称为
RequestModel(ModelType.W8, Size._4);
已经描述了更奇怪的结果。
使用“ EX”选项后, W8
将映射到值9。将它们删除后,现在将映射到2。如果您从序列号为9的值中加载ModelType type
,它将说明差异- type
实际上是9,在您的枚举中不再存在,因此ToString
将打印数字值。
我建议修复您的枚举以显式指定值,因为这将使其向后兼容。
public enum ModelType
{
R4 = 7,
W6 = 8,
W8 = 9,
W9 = 10,
X9 = 11
}
我发现了问题:在初始化方法中,有一个声明的BUT NOT INITIALIZED变量:
ModelType currentModel;
我不知道是出于什么原因,但是该变量只是获得了奇怪的值9(与W8枚举的旧值相对应),并且在问题描述的函数调用之前已解析了初始化方法。
我通过初始化变量解决了这个问题。
谢谢大家! :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.