仓库: basil/vampire-like
本次范围
两个 commit,主要围绕两件事:把分散在子类里的攻击计时器逻辑上提到基类 EnemyBase,以及清理掉一个已经过时的技能文档目录。总共 +65 / -447 行,改动集中在代码、配置和文档。
事实概览
-
commit
cc8982b— 推进计时器逻辑集中管理。
EnemyBase新增_canAttack和_attackTimerHandle字段,MeleeEnemy和RemoteEnemy删掉各自重复的定义。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生成(草稿与终稿同模型)。