docs(enemy): 计划补三条实测坑与两处修正

执行须知新增:EnemyBase.Abilities 属性遮蔽同名命名空间(成员访问位置须写全名,
Task 16/17 会再遇到);unity_get_compilation_errors 在编译成功时不报警告,
'0 warnings' 是上报口径而非真值;MCP 测试运行器忽略过滤参数。

Task 5:选招器防重复的重置移出 BossBase.OnSpawn(Task 3 审查确认应归
EnemyBase.OnSpawn 以覆盖全部池化敌人)。
Task 21:残留扫描的预期由「无命中」改为「BD_/行为树 仍有约 20 处待清」。
This commit is contained in:
2026-07-30 13:02:52 +08:00
parent 0a92d21ce1
commit d8d99dd1ce
@@ -35,6 +35,24 @@
⚠️ **MCP 卡死排查**:Unity 编辑器窗口失焦会让 MCP 队列无限期卡住(不是超时)。若某个 MCP 调用长时间无返回,把 Unity 窗口置前即可恢复,不要盲目重试。
### 两个实测踩过的坑(Task 3 执行时发现)
**1. `EnemyBase.Abilities` 属性遮蔽 `BaseGames.Enemies.Abilities` 命名空间。**
`EnemyBase``public EnemyAbilityRegistry Abilities { get; }`。在**类型位置**
`new Abilities.EnemyAttackSelector(...)` 能编译(解析为命名空间),但在**成员访问位置**
`Abilities.EnemyAttackSelector.SomeConst` 编译失败(解析为那个属性)。
`EnemyBase` 内引用该命名空间下的静态成员时必须写全 `BaseGames.Enemies.Abilities.…`
Task 16 / 17 都要改 `EnemyBase`,会再遇到。
**2. `unity_get_compilation_errors` 在程序集编译成功时不报警告。**
Unity 只对**编译失败**的程序集给出完整诊断集。`ChargeAbility.cs:29-30` 有两个既存
`CS0414``[SerializeField]` 但从未读取),在绿色构建下完全不可见。
所以"0 errors 0 warnings"是这个上报口径下的结果,不等于真的零警告——
后续任务若在构建一度失败时看到这两条,那是既存问题,不是自己引入的。
**3. MCP 测试运行器忽略过滤参数。** `unity_testing_run_tests``testFilter` / `filter` 无效,
每次都跑整个 EditMode 套件。这不影响正确性(等于免费拿到全量回归),但别把全量结果误读成过滤结果。
### 项目硬约束
1. **禁止下游兜底**CLAUDE.md 第 6 条):不要用 `?? 默认值` / `try-catch` / `if(null) return` 掩盖上游漏配。缺配置就 `Debug.LogError` 或抛异常。
@@ -622,7 +640,7 @@ namespace BaseGames.Enemies.Abilities
- [ ] **Step 5: 跑测试确认通过**
Test Runner → EditMode → `EnemyAttackSelectorTests`。期望:全部 passed(原 9 个 + 新 5 个 = 14)。
Test Runner → EditMode → `EnemyAttackSelectorTests`。期望:全部 passed(原 10 个 + 新 5 个 = 15)。
- [ ] **Step 6: `EnemyStatsSO` 加系数字段**
@@ -964,9 +982,11 @@ Test Runner → EditMode → `BossPhaseAbilityGateTests`。期望:4 passed。
```csharp
_phaseGate?.ApplyPhase(0); // 对象池复用:回到阶段 0 的启用集
AttackSelector?.ResetRepeatMemory();
```
> 选招器的防重复记忆**不在这里**重置——Task 3 的代码审查发现它该归 `EnemyBase.OnSpawn()`
> (覆盖全部池化敌人,而非只有 Boss),已在 Task 3 的修正里落地。此处只管阶段门。
- [ ] **Step 6: 编译 + 全量回归**
MCP `unity_get_compilation_errors` 期望 0/0`Run All` 期望全绿。
@@ -2809,7 +2829,14 @@ grep -rn "BossSkill\|WeakPoint\|Telegraph\|AttackPattern\|SkillSequence\|StopBeh
Assets/_Game/Scripts --include=*.cs
```
期望无命中。若有注释残留,一并清掉(CLAUDE.md 第 4 条)。
`BossSkill|WeakPoint|Telegraph|AttackPattern|SkillSequence|StopBehaviorTree` 期望无命中(相关类型已删)。
`BD_|行为树` **预期仍有命中**——Task 3 执行时实测 `Assets/_Game/Scripts/Enemies/` 下约 20 处,
散落在 `EnemyAnimationConfigSO` / `SensorSlotNames` / `EnemyAbilityBase` / `EnemyDeathSequence`
/ `ChaoFengBoss` 等文件的注释与 `[Tooltip]` 里。其中一部分会随 Task 16/17/19/20 自然消失
`BossSkillSO``TelegraphSystem` 整文件删除;`BossBase``EnemyBase``EnemyDeathSequence`
在各自任务里改到)。**本步负责清掉剩余的**:逐个改为只描述功能的表述,不删除功能性内容。
清完后再跑一次 grep,此时才应无命中。
- [ ] **Step 3: 更新指导手册**