大家好!我正在构建一个2D的拼图/捐赠游戏。我的目标是编写高度可维护的代码,并学习高级模式,所以我正在追求严格分离的架构(即使它在过度工程的边缘)。
(注:由于我无法在这里直接上传图片,我已经在这个网址(http://www.reddit.com/r/Unity3D/comments/1t3ks2z/architecture_review_building_a_highly_decoupled/)上提了相关的图表/视频)
以下是我的高级结构:
- 输入和状态:盲目的广播者读取硬件输入并触发ScriptableObject (SO)事件。
GameStateManager监听交互并相应地切换行动图 (World <-> Workstation)。 - 数据 vs 视频 (主从):网格逻辑严格使用
Vector2Int(主)。3DTransformblindly模仿它(从)以防止浮点点问题。 - 拖曳和释放握手:
InventoryManager(UI)产生一个3D虚拟和触发StartDraggingSO。DragManager(傻瓜式传输者)捕获事件并使对象随鼠标而动。
*释放后,DragManager询问目标网格通过模块化的PlacementConditionSOs来模拟是否有效。- 成功:网格将物品镶嵌在一起,触发
PlacementSuccessSO-> Inventory清除数据。 - 失败/丢失:触发
PlacementFailedSO-> Inventory恢复UI图标并破坏3D虚拟。
我对您的问题:
- 这个具体流程在实际中是否有效,您是否认为有明显的瓶颈?
- 是否有一种方法来简化架构,同时达到相同的分离程度?
任何的批评或建议都是值得的。感谢!
评论 (0)