Log Detail

vampire-like Git 变更总结

解决Shop与ItemTooltip跨模块事件耦合问题,统一UI目录规范,拆分ShopController逻辑并补全UI架构文档。

2026/06/17 basil/vampire-like commit: c30b256d..43f81c89

UI重构目录规范架构文档

basil/vampire-like 开发日志(2026-06-17)

今天一共提交4个commit,总代码变动规模为 +465 / -92,主要围绕UI模块边界治理、项目目录规范统一、业务代码可读性优化三个方向做了重构,同时补全了UI架构设计文档的核心约定,把之前踩过的坑都固化成了规范。

核心改动说明

1. 拆分 Shop 与 ItemTooltip 的跨模块事件边界

之前这两个模块的事件设计一直有耦合的问题:最开始图省事把ItemTooltip的锁定逻辑放在了ItemTooltip模块内部,结果每次都要额外处理「怎么让ItemTooltip感知到Shop内的陈列道具被点击」的逻辑,两个本来应该独立的UI模块,事件杂糅在一起,边界特别模糊。 这次调整的核心思路就是把权限收回到模块内部:把tooltip的锁定、关闭判断逻辑从ItemTooltip侧挪回Shop侧,由Shop自己决定什么时候要触发tooltip的隐藏,自然就把两个模块的专用事件拆开了:

  • 清理了ItemTooltipHideEventArgs里冗余的Force字段,删掉了已经废弃的ItemTooltipLock、Show事件对应的meta文件
  • 新增Shop模块专属的DisplayItemHideEventArgs事件类,彻底划清两个模块的事件边界,后续各用各的私有事件,不会再出现跨模块乱串的情况
  • 把这次踩坑总结的3条UI开发核心约定补到了《UI-5层架构设计规范.md》里,后续所有UI开发都要遵循:
    • 禁止直接调用View的公开方法做局部刷新,应该更新Context内的刷新粒度控制字段,再调用统一的RefreshUI由View自行决定刷新内容
    • View允许提供构造函数,但只能由对应的Controller调用,专门用来封装从RawData到展示数据的转换逻辑
    • Context内允许定义NeedRefreshXxx这类布尔型的刷新粒度控制字段,支持局部刷新,不要每次都整页重绘

2. 统一全项目UI目录与命名规范

之前UI层的目录和类命名一直没有统一标准,有的带Form后缀有的不带,通用事件和业务专属事件混放,找文件的效率特别低,这次做了全量的标准化调整:

  • 事件类按业务模块收敛:原来定义了一个通用的RefreshEventArgs,实际上只有LevelUp模块在用,直接重命名为LevelUpRefreshEventArgs,同步调整了LevelUp模块内所有事件订阅、触发的逻辑,避免后续出现多个模块抢同一个通用事件的问题
  • 业务视图文件按模块归位:把之前放错层级的LevelUpRewardItem等视图文件,迁回了对应业务模块的专属目录
  • UIBase层目录统一简化:把AboutFormDialogForm这类带冗余Form后缀的目录名做了简化,同时把原来的DisplayItemInfo目录统一重命名为ItemTooltip,和业务层命名保持一致

注:这次的类重命名是直接在IDE内做的符号级重命名,目录迁移是在Unity编辑器内操作的,理论上所有引用都会自动同步,不会出现遗漏。

3. 拆分 ShopController 的 Context 构建逻辑

之前ShopController的代码越写越长,光BuildContext相关的逻辑就占了小两百行,每次改相关逻辑都要翻半天,特别影响开发效率。 这次用partial类把BuildContext的逻辑单独抽到了ShopController.BuildContext.cs文件里,完全没有改动原有业务逻辑,只是做了物理拆分,看代码的时候可以直接找对应的partial文件,能降低不少认知负担。顺便补了ShopContext的默认构造函数,省得每次初始化都要手动给初始字段赋值。 这个拆分模式不会强制推广到所有Controller,后续哪个业务Controller的BuildContext逻辑写长了,再按同样的方式拆分就行。 另外这次还大幅更新了《UI-5层架构设计规范.md》,补充了UseCase与编排层(Procedure)的依赖倒置通信规则,以及完整的架构分层说明,后续新模块开发都要遵循这套分层规范。

后续跟进事项

  1. 跑通全链路功能验证,排查本次目录调整、事件重命名有没有遗漏的引用,避免出现运行时异常
  2. 验证Shop模块Context构建逻辑拆分后的初始化流程,确认和原有逻辑完全兼容
  3. 推进其余业务模块按本次确定的目录、事件规范完成对齐重构,统一全项目的开发标准
  4. 跟进UI-5层架构规范的落地执行,避免后续再出现跨模块事件耦合、目录乱放的问题

注:本文由模型 doubao-pro 生成(草稿与终稿同模型)。