joywayer
|
2c569dcf0d
|
docs(enemy): Task 21 补 Step 2.5——处理描述已删除系统的长期文档
Task 19 发现约 20 份文档仍在描述旧 Boss 轨,含两份整份失效的架构/设计文档。
按第 7 条,Docs/ 是长期文档,留着描述不存在的类型比没有更糟。
分类处理:两份整份删除、AssetFolderSpec 局部修订、Guides 随新章节改写、
Docs_Dev 的历史记录保留不动(那是过程记录,改了反而失真)。
|
2026-07-30 16:47:51 +08:00 |
|
joywayer
|
ef1998db2b
|
docs(enemy): Task 19 补 Step 0——两处计划遗漏的引用,不清则删除任务必然编译失败
ChaoFengKnockdownCounter.cs:82 有 BossSkillExecutor 的编译期类型引用,
该文件既不在删除清单也未安排改动,却仍被 ChaoFengBoss 使用。
EditorScaffoldUtils 的命名前缀表里有 BossSkillSO/SkillSequenceSO 两条死条目。
后续任务再添一项:池化敌人复活带着上一条命的冷却——OnSpawn 里
InterruptAll 的注释声称重置冷却,实际 Interrupt 在未运行时提前返回、
运行时又是设置而非清零冷却。影响全体池化敌人。
|
2026-07-30 16:28:21 +08:00 |
|
joywayer
|
02c3a764a5
|
docs(enemy): 记录 Task 15 实测结论——含一个项目级严重 bug
后续任务新增最高优先级项:EnemyHurtState.Enter 在无受击动画时提前返回
且不安排回 Controlled,敌人被打一次即永久卡在 Hurt 态、AI 永久停摆。
美术未接入的当下等于大部分敌人一挨打就废。与 Boss 轨无关,需单独立项。
Task 16 加警示:不得删掉 Task 15 新增的 BossBase.Start()——它是场景直接
放置的 Boss 唯一一次应用阶段招池的时机(EnterPhase 只在换阶段触发、
OnSpawn 只在池化复用触发,开局都不跑)。
顺带更正计划头部的 Unity 版本(实际 2022.3.62f3c1,非 Unity 6)。
|
2026-07-30 16:05:26 +08:00 |
|
joywayer
|
bdeefca75b
|
docs(enemy): Task 15 补 Phase1_Tornado_HitBox 去留判定
Task 14 发现该 HitBox 在 _hitBoxes 数组随 BossSkillExecutor 移除后已无任何引用。
龙卷由动画事件生成弹体、判定自带,Boss 身上这个 HitBox 很可能多余。
要么删掉其创建与伤害源绑定,要么绑进对应能力的槽位——不得以无引用状态留在对象树上。
|
2026-07-30 15:19:57 +08:00 |
|
joywayer
|
e488255315
|
docs(enemy): Task 15 补两项——UseAbility 静默失败与频道资产实名
Task 11 发现 EnemyBrainContext.UseAbility 对找不到的能力 id 静默返回 false:
入场演出资产漏配会被静默跳过且零报错,是第 6 条禁止的静默通过。
建图期已挡掉空 id,故运行期解析不到必是配置错误,改为 LogError(非抛异常,
因为这是每帧路径)。放 Task 15 因为那是第一次能观察到配齐/漏配两种表现的时点。
Task 12 实测:EVT_BossFightToggled 资产不存在,实际是 EVT_BossFightEnded
被当开关用(BGMController 与 BossHPBar 都绑它)。资产名与用途不符是既存问题,
本次只记录不改名。
|
2026-07-30 14:58:08 +08:00 |
|
joywayer
|
d172f903b6
|
docs(enemy): 记录 BrainBuilder 缺少「态是否有出边」校验
Task 9+10 执行时发现:Build() 只做 RequireState 的正向校验(边指向的态
是否已声明),不校验反向——已声明却无出边的非终态会让敌人永久卡住且零报错。
BossFragments.PhaseTransition 按设计不自带出边,正是这类风险点。
列入后续任务,并记录 MoveToAnchor 只在 OnEnter 采样锚点这一隐含假设。
|
2026-07-30 14:34:32 +08:00 |
|
joywayer
|
5046125acb
|
docs(enemy): 执行须知第 5 条——RequireComponent 指向抽象类型时 AddComponent 返回 null
HurtBox 标了 [RequireComponent(typeof(Collider2D))],Collider2D 是抽象类,
Unity 无法自动补齐,AddComponent<HurtBox>() 返回真 null。建测试对象须先挂
具体碰撞体。Task 6 实测证实;HurtBoxEditor.cs:97 早有同样注释,说明这个坑
项目里踩过但没写进规范。
|
2026-07-30 14:04:42 +08:00 |
|
joywayer
|
c577d6baa6
|
docs(enemy): Task 16 的行为树残留清理已在 Task 5 顺带完成
|
2026-07-30 13:52:47 +08:00 |
|
joywayer
|
24c612930e
|
docs(enemy): 记录 EditMode 不触发 Awake 的坑,并分派两处越界发现
执行须知第 4 条:EditMode 下 AddComponent 不调用 Awake(Task 4 实测证实)。
后果是 EnemyAbilityBase._enemy 留空使 CanUse 恒假——依赖它的断言在修复前
也会通过,成为永远不会失败的测试。做法是给测试子类加 RunAwake() 显式触发,
不要反射直写字段。
Task 5 追加:IAttackCandidate 的 CanUse 注释补上 enabled 这一维。
Task 21 追加:EnemyQuotaManager._maxActiveBehaviorTrees 改名须带
FormerlySerializedAs,否则丢场景配置值。
|
2026-07-30 13:30:44 +08:00 |
|
joywayer
|
d8d99dd1ce
|
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 处待清」。
|
2026-07-30 13:02:52 +08:00 |
|
joywayer
|
b0fd040904
|
docs(enemy): 按 Task 1+2 审查结论修订 spec 与计划
spec:ResourceFull 由「无组件时恒 false」改为显式抛,与 Boss facet、AnchorAt
统一为「依赖组件缺失一律抛,不返默认值」。
计划:Task 16 补上 BossBase 残余三处行为树残留的清理项(含运行时告警字符串);
Task 19 记录 Patterns/ 是零外部引用的独立程序集,可整目录删。
|
2026-07-30 12:32:43 +08:00 |
|
joywayer
|
5839b423ae
|
docs(enemy): Boss AI 双轨统一实施计划——21 个任务,分两阶段
阶段一 Task 1-15 只加不删(每 Task 编译通过、测试全绿,末尾嘲风能用新轨打起来);
阶段二 Task 16-21 删旧轨(先改引用方,再删被引用类型;先删资产,再删脚本)。
编写期核查坐实并更正 spec 两处:
- 取消 EnemyBase.SetInvincible(float):HurtBox.SetInvincible(bool) 已存在,
玩家侧 EnableIFrame/DisableIFrame 就走它,无敌时长由动画上两事件间距表达。
新增件由六件减为五件。
- 竞技场锚点改挂 IBossControl,不走黑板:EnemyAiBrain._context 是私有字段
且无公开访问器(BossBase 无从写入),且 ResetScratch 会清黑板带来隐式时序约束。
另确认 EditorScaffoldUtils.CreateSOAsset(Type,...) 重载已存在,无需新增辅助。
|
2026-07-30 11:01:46 +08:00 |
|