有没有一种优雅的方法可以在Unity场景文件中保留枚举名称


正如其他人所指出的,如果在Unity检查器中分配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),但它的灵活性较差,并且在创建字符串的新实例时存在问题

最新更新