diff --git a/Docs_Dev/superpowers/plans/2026-07-30-boss-ai-single-track.md b/Docs_Dev/superpowers/plans/2026-07-30-boss-ai-single-track.md index 00067929..ba70d14a 100644 --- a/Docs_Dev/superpowers/plans/2026-07-30-boss-ai-single-track.md +++ b/Docs_Dev/superpowers/plans/2026-07-30-boss-ai-single-track.md @@ -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: 更新指导手册**