对于上下文,在Unity3D编辑器中使用C#。
我越来越多地开始使用枚举将内容松散地耦合到设置。
例如,我正在设置一个项目,我想从已定义的视觉库中为其提供视觉效果。该视觉基本上是一个类,其中包含精灵,颜色和附加到整数唯一ID的模型。从这个唯一ID,我生成一个枚举。并且需要花费一些精力来验证UniqueID实际上是唯一的,并捕获与此有关的一些边缘情况。
这样做的好处是,枚举是项中必须存储的所有内容,才能将其链接到视觉对象。在运行时,会创建一个字典来查找枚举,然后请求存储的视觉对象被加载/使用。这将视觉效果与商品松散耦合,因此加载商品列表不会自动加载与商品关联的所有视觉资产。最后一部分是统一的默认行为,这确实很烦人,并且在这种默认行为中,它确实会减慢游戏速度并消耗大量RAM。
因此,我们有许多用于各种目的的枚举,并且发生了很多查找工作。目前,我们对此没有任何大问题。
但是,枚举和这些枚举的编辑/生成很容易出错,因为删除值后,这些项(以及其他相关方)变得不那么明智,然后必须在构建之前对其进行测试,或在运行时遇到安全陷阱/错误。
我的问题是。这是对Enums的公然滥用吗?如果是这样,解决这种松散耦合问题的更好方法是什么?如果不是,那么以一种安全的方式设置和管理这些枚举的更好方法是什么?因此,如果现在使用枚举的任何东西都具有无效值,那么警钟就会响起,或者值的含义会改变吗?我认为这几乎是不可能的,并且需要到处都有代码才能在重新编译时进行“自检”?
或者这是否全部归结为团队纪律以妥善管理价值观,并知道枚举的含义和代表什么?在这种情况下,除非我为其中的每一个编写一个自定义编辑器,否则它将永远无法使该设计师友好。
感谢您可能提供的任何见解。
如果我理解正确,您正在尝试将每个项目与多个静态视觉效果之一相关联吗?如果是这种情况,您可以简单地将每个视觉对象写为视觉对象类中的静态只读对象。然后,您可以在“项目”对象中创建一个字段,例如“视觉”并将其设置为引用正确的视觉。
我不知道是什么使视觉效果加载,但是如果构造函数加载了,那么我相信它们将在运行时首次使用视觉类时加载。