Log Detail

vampire-like Git 变更总结

将敌人攻击计时器逻辑上提到基类统一管理,并清理过时的技能文档目录。

2026/06/25 basil/vampire-like commit: cc8982b1..c111170b

计时器重构代码上提文档清理

仓库: basil/vampire-like

本次范围

两个 commit,主要围绕两件事:把分散在子类里的攻击计时器逻辑上提到基类 EnemyBase,以及清理掉一个已经过时的技能文档目录。总共 +65 / -447 行,改动集中在代码、配置和文档。

事实概览

  • commit cc8982b — 推进计时器逻辑集中管理。
    EnemyBase 新增 _canAttack_attackTimerHandle 字段,MeleeEnemyRemoteEnemy 删掉各自重复的定义。EnemySpawnScheduler 换成了 SepCore.Timer,不再自己维护间隔数组,Init 方法也加了个 OnWaveSpawn 回调。EnemyManagerComponent 那边同步改了下调用。总 +65 / -86,涉及 5 个文件。

  • commit c111170 — 清理项目目录并做了一次打包验证。
    删了 skills/simulation-development/ 下的三个文件(SKILL.md、agent 配置、架构规范),总共 -361 行。没新增代码。

设计考量与遇到问题

为什么把攻击计时器逻辑上移到基类?
目前所有敌人都有攻击行为,子类里重复定义 _attackTimerHandle_canAttack 没必要,放到 EnemyBase 里大家复用同一个冷却逻辑,后续维护成本更低。当时也想过用组件或接口来避免基类膨胀,但考虑到敌人类型暂时不会有太大分化,直接上提更省事,先跑通再说。

删掉 skills/simulation-development 的原因?
那些文档其实已经过时了,当初设计的时候就不太规范,作为 skill 来说内容太简单,留着反而容易误导。项目进入稳定期后,这些外部参考文档不再需要,所以干脆清掉。

打包验证遇到的问题
这次重构确实在打包时炸了。从 GameStateBattle 切换到 GameStateShop 时,按理说应该隐藏所有敌人,但实际代码会先隐藏一波,然后又莫名其妙刷新一批新的敌人出来。这批新敌人不能移动,可一旦玩家进入攻击范围,它们照常攻击。目前正在排查,怀疑是计时器重置或敌人隐藏逻辑没处理好,导致状态没对齐。

后续关注点

  • 修复 Shop 状态切换时敌人多刷且不能移动的问题,这直接影响核心流程。
  • 确认 EnemyBase_canAttack 的默认值是否在所有场景下都合理(比如刚生成时是否应该允许攻击)。
  • 看看项目里还有没有其他分散的计时器逻辑(比如子弹、道具),要不要也统一到 SepCore.Timer 下。

注:本文由模型 deepseek-v4-flash 生成(草稿与终稿同模型)。