我开始使用汇编定义,并试图让我的汇编之间的引用不太多。这导致我在必须在汇编之间通信时使用全局事件总线。随着我在项目上工作的时间,我开始远离事件总线方法,开始在共享汇编中使用接口来查看哪一个我更喜欢。例如,任务,我将有一个任务日志注册表,这基本上是一个管理字典,包含一个实体ID,这是一个稳定的字符串ID,每个游戏实体都有一个,例如玩家将有一个,模拟玩家将有它们等等,这个ID是关键字,然后值是任务日志。这使得任务日志不直接连接到玩家,我试图避免使用MonoBehaviour,除非我真的需要,所以所有这些都是纯粹的C#。

我同样对像库存这样的东西做同样的事情。这使得保存变得非常容易,因为当我保存时,我只需要循环遍历注册表,当我加载时,我只需要重建注册表,当引导时基本上只需要重建所有保存的数据,依据所选的保存槽位。 我可以简单地在玩家上添加一个库存组件,或者在玩家上添加一个任务日志组件,但这使得重用系统变得更加困难,因为玩家需要有所有这些组件,而不是仅仅有一个ID。

我希望脱离全局事件总线,并可能只使用常规事件或Unity事件,但总体而言,我不确定这是否是一个坏方法。 我真的很喜欢它。 我只曾做过JSON序列化,所以我不确定这种方法在二进制序列化中是否会失败,我不确定更 Experienced 开发人员如何处理序列化,如果我正在做的只是非常愚蠢的东西。我之前提过这个问题,人们说C#是一个面向对象的语言,我正在通过使用这些注册表而抵抗它,不确定其他人怎么想。