enum
的值,它将存储枚举的数值,而不是名称。如果稍后编辑枚举,就会出现问题,这在开发过程中经常发生。
经常提出的解决方案是在枚举中添加数字键,例如:
public enum MyEnum {
Entry1 = 0,
Entry2 = 1,
...
}
这并不能很好地与多个开发人员接触。假设DeveloperA向枚举中添加了三个项,Developer B(与 developerA有没有办法强制Unity存储enum
的名称而不是其数值?
它更多地与非Unity C#代码有关,但希望能对您有所帮助。
如果你想在存储的数据中没有数字,从而有可能拥有更独特的东西,你可以在这里使用另一种方法,比如Constants类。这里有一个例子:
public class Constants
{
public readonly string Entry1 = "entry_code_1";
public readonly string Entry2 = "entry_code_2";
public readonly string Entry3 = "entry_code_3";
//and others
}
要使用它,只需写:
var value = EntryConstants.Entry1;
如果它是常量,它就不会用新的实例来破坏内存,而且这里的性能也应该可以。问题是C#还不支持字符串枚举,这也是为什么这个带有常量类的肮脏破解效果最好的原因。
您也可以使用.ToString()
方法和Enum.Parse<MyEnum>(str)
,但它的灵活性较差,并且在创建字符串的新实例时存在问题