在C#中生成像enum这样的人类可读ID的最佳方法是什么?

时间:2017-05-31 16:10:29

标签: c#

我想在Unity3d中为我的游戏资产生成唯一ID。我想要一种类型安全且快速可比的数据类型。此外,我不想使用字符串,因为它破坏了代码中的拼写错误代码。我正在寻找可以通过自动完成访问的Sound.Button_Click之类的内容。

我试图为游戏设计师制作一个工具来管理包含枚举的文件。 Unity3D将枚举与int序列化,因此当我从我的资产枚举中删除一个元素时,所有序列化对象都会显示错误的值。无论我不确定制作这样的工具都是个好主意。

实现它的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

我经常会这样做:

public static class AssetKeys
{
   public static readonly string Skin1 = "skin1.bmp";
}

我不确定它是否是最佳方式,但它至少避免了错误输入字符串标识符的问题

答案 1 :(得分:1)

  

Unity3D使用int序列化枚举,所以当我从我的资产中删除一个元素时枚举所有序列化对象呈现错误的值。

您可以指定枚举值,以便在删除项目时不会更改。

如果你这样做:

enum Values
{
    Red, Blue, Green
}

然后修改枚举(添加或删除项目)可以更改值。

如果你这样做

enum Values
{
    Red = 0,
    Blue = 1,
    Green = 2
}

然后添加或删除项目不会改变任何内容。