Log Detail

vampire-like Git 变更总结

统一全链路UniTask异步调用规范,收敛游戏流程层冗余设计,清理文件为多平台输入适配做准备

2026/06/06 basil/vampire-like commit: 7ac38cd9..5ede6846

异步改造代码重构输入适配准备

basil/vampire-like(别名:vampire-like)

这周的改动核心围绕全链路异步规范统一推进,顺带收敛了游戏流程层的冗余设计,也做了后续多平台输入适配的前置准备。总共提交了7个commit,其中代码类改动6个,目录/文档清理1个,总代码变更量为 +466 / -537,整体是删冗余略多于新增的状态。

核心改动:全链路异步规范统一

这次的异步改造覆盖了从工具层、UI层、实体层到管理器的全链路调用,核心目标是把原来混杂的回调式、同步式调用统一到UniTask异步风格,减少嵌套回调的维护成本。具体改动包括:

  • 异步工具层支撑优化:更新了AsyncTaskHelper.cs,调整了WaitEventAsync<T>泛型方法的定义结构,补充了相关异步支撑逻辑,单文件改动 +123 / -29,为上层的事件等待场景提供更稳定的异步封装。
  • UI层调用规范对齐:统一了UIRouter框架下所有UI控制器的OpenUIAsync方法返回值——原来的UniTask<int?>返回值没有实际业务场景使用,所有实现都是固定返回null,所以直接调整为无返回值的UniTask,覆盖了对话框、HUD、道具详情、升级页、商店页等9个UI组件,彻底对齐了UI层的异步调用规范。
  • 实体异步扩展补全:更新了EntityAsyncExtension.cs,新增集合、线程、通用工具类的依赖引用,补充了一批实体相关的异步扩展方法,单文件改动 +182 / -7,作为实体层异步调用的核心支撑。
  • 管理器与实体调用迁移:一方面把EnemyManagerComponent的初始化逻辑改造为异步实现,OnInit方法入参加入Player实例用于逻辑关联,整个敌人生成流程同步对齐异步规范;另一方面迁移了金币、经验、投射物、特效等高频生成实体的调用路径,把原来的同步生成调用全部替换为异步扩展方法,同步调整了敌人类、可击中目标类等实体逻辑的依赖引用,完成了实体层的调用风格统一。

这次做异步改造特意做了设计取舍:没有直接改写UnityGameFramework底层的实体、UI打开逻辑,只是把原来「发起请求→监听事件回调」的传统UGF风格流程,封装成语义更清晰的异步操作。这样既完成了全链路调用风格的统一,又不用动已经稳定运行很久的核心框架逻辑,最大程度规避了大改带来的稳定性风险。

流程层职责收敛

在做ProcedureGame模块的异步迁移过程中,顺带梳理了一遍游戏状态层的职责,发现了不少冗余设计: 原来GameStateBase以及战斗、升级、商店等所有子类的OnEnterOnUpdate方法,都强制传入了Fsm实例参数,但实际所有状态都没有直接操作Fsm的需求,都是通过持有的ProcedureGame成员变量获取所需数据,属于完全没必要的参数透传。

所以这次直接把GameState系列方法的Fsm入参全部移除,简化了方法签名,也收窄了状态层的访问权限,整个调整完全不影响现有业务逻辑。同步也迁移了Player模块、ShopUseCase的实体调用风格,把商店控制器里的异步事件调用统一成了Forget()的消防调用写法,避免未等待的异步任务编译报警。

前置准备:多平台输入适配

这次也做了项目目录的清理工作,删除了.claude/commands/opsx下的3份实验性工作流命令文档(共清理329行冗余文件),为后续引入InputModule做多平台输入适配做前置准备。 目前已经明确输入适配的核心覆盖平台:PC(键鼠操作)、主机(手柄操作)、移动端(触屏操作),后续会逐步推进输入模块的接入与适配。

后续关注点

  1. 全链路异步改造完成后,需要全面排查是否存在遗漏的旧同步调用,避免同步/异步混用带来的兼容性问题;
  2. 验证EnemyManager异步改造后的敌人生成时序、性能表现,确保改造不影响战斗逻辑的正确性;
  3. 跟进InputModule的接入进度,优先完成三个核心平台的基础输入通路验证。

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