大家好!我正在构建一个2D的拼图/捐赠游戏。我的目标是编写高度可维护的代码,并学习高级模式,所以我正在追求严格分离的架构(即使它在过度工程的边缘)。

(注:由于我无法在这里直接上传图片,我已经在这个网址(http://www.reddit.com/r/Unity3D/comments/1t3ks2z/architecture_review_building_a_highly_decoupled/)上提了相关的图表/视频)

以下是我的高级结构:

  • 输入和状态:盲目的广播者读取硬件输入并触发ScriptableObject (SO)事件。 GameStateManager 监听交互并相应地切换行动图 (World <-> Workstation)。
  • 数据 vs 视频 (主从):网格逻辑严格使用 Vector2Int (主)。3D Transformblindly模仿它(从)以防止浮点点问题。
  • 拖曳和释放握手:
  • InventoryManager (UI)产生一个3D虚拟和触发 StartDraggingSO
  • DragManager (傻瓜式传输者)捕获事件并使对象随鼠标而动。
    *释放后,DragManager询问目标网格通过模块化的 PlacementConditionSOs来模拟是否有效。
  • 成功:网格将物品镶嵌在一起,触发 PlacementSuccessSO -> Inventory清除数据。
  • 失败/丢失:触发 PlacementFailedSO -> Inventory恢复UI图标并破坏3D虚拟。

我对您的问题:

  1. 这个具体流程在实际中是否有效,您是否认为有明显的瓶颈?
  2. 是否有一种方法来简化架构,同时达到相同的分离程度?

任何的批评或建议都是值得的。感谢!