我使用枚举作为一对值是不是一种糟糕的做法



对于上下文,请在Unity3D编辑器中使用C#。

我越来越多地开始使用枚举来松散地将事物与设置相结合。

例如,我正在设置一个项目,我想从定义的视觉效果库中为它提供一个视觉效果。这个可视化基本上是一个类,它包含一个精灵、一种颜色和一个附加到一个整数唯一ID的模型。从这个唯一ID,我生成了一个枚举。而且,要验证UniqueID是否真的是Unique,并发现一些与此相关的边缘情况,需要付出一些努力。

执行上述操作的好处是,枚举是所有必须存储在项上的内容,以便将其链接到视觉。在运行时,会创建一个字典来查找枚举,然后请求加载/使用存储的可视化。这会将视觉效果松散地耦合到项目,因此加载项目列表不会自动加载与该项目关联的所有视觉资产。最后一部分是unity的默认行为,这真的很烦人,而且在这种默认行为中,它确实会减慢游戏速度并消耗大量RAM。

因此,我们有很多用于各种目的的枚举,并进行了大量查找。目前我们对此没有太大的问题

然而,枚举和这些枚举的编辑/生成很容易出错,因为当值被删除时,项(以及任何其他相关方(都不明智,因此必须在构建之前进行测试,或者在运行时遇到安全捕获/错误。

我的问题是,这是对Enums的公然滥用吗?如果是这样的话,解决松耦合问题的更好方法是什么?如果不是,有什么更好的方法可以安全地设置和管理这些枚举?所以,如果使用枚举的任何东西现在有一个无效的值,或者意义上的值会改变,警钟就会响起?我认为这几乎是不可能的,并且需要到处的代码在重新编译时进行"自检"?

或者这一切都归结为团队纪律,以便很好地管理价值观,并知道枚举的含义和代表什么?在这种情况下,除非我为每一个都写一个自定义编辑器,否则它永远无法使这个设计师友好。

感谢您提供的任何见解。

如果我理解正确,你是在试图将每个项目与多个静态视觉效果中的一个关联起来吗?如果是这种情况,您可以简单地在visuals类中将每个visual编写为静态只读对象。在你的"项目"对象中,你可以创建一个名为"视觉"的字段,并将其设置为引用正确的视觉。

我不知道是什么让视觉加载,但如果构造函数加载了,那么我相信它们会在运行时第一次使用视觉类时加载。

相关内容

最新更新