From e2645b621256db0df3c97370fa5b2aaecd8f9ef3 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Mon, 27 Jul 2026 15:09:47 +0800 Subject: [PATCH] =?UTF-8?q?fix(editor):=20=E8=84=9A=E6=89=8B=E6=9E=B6?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E6=94=B9=E4=B8=BA=20BrainGraph=20=E6=8C=87?= =?UTF-8?q?=E5=BC=95,=E6=B8=85=E9=99=A4=E5=B7=B2=E5=BA=9F=E5=BC=83?= =?UTF-8?q?=E7=9A=84=20BehaviorTree/BossSkillSequencer=20=E8=AF=B4?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Editor/Scene/SceneObjectPlacerTool.cs | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/Assets/_Game/Scripts/Editor/Scene/SceneObjectPlacerTool.cs b/Assets/_Game/Scripts/Editor/Scene/SceneObjectPlacerTool.cs index 74847710..76fd65f9 100644 --- a/Assets/_Game/Scripts/Editor/Scene/SceneObjectPlacerTool.cs +++ b/Assets/_Game/Scripts/Editor/Scene/SceneObjectPlacerTool.cs @@ -342,7 +342,8 @@ namespace BaseGames.Editor SetupPerceptionSystemSlots(sensorHub, new[] { "aggro", "los" }, report); report.Add("★ 指定 EnemyBase._statsSO、_animConfig 资产(按所创建的敌人类型命名)。"); - report.Add("★ 挂载行为树 BehaviorTree 组件,指定对应 .asset。"); + report.Add("★ AI(BrainGraph):先写一个 [AiDefinition(\"\")] 的 AiScript 子类," + + "再挂 EnemyAiBrain 组件并把 _definitionId 设为该 id。"); Undo.CollapseUndoOperations(undoGroup); Selection.activeGameObject = go; @@ -404,7 +405,9 @@ namespace BaseGames.Editor SetupPerceptionSystemSlots(sensorHub, new[] { "aggro", "attack_melee", "attack_range", "los" }, report); report.Add("填写 _bossId。"); - report.Add("挂载 BossSkillSequencer 组件并指定技能序列 SO;行为树、NavAgent 需手工添加。"); + report.Add("★ 挂载 BossSkillExecutor 并指定 BossSkillSO 列表(技能执行层);NavAgent 需手工添加。"); + report.Add("★ AI(BrainGraph):先写一个 [AiDefinition(\"\")] 的 AiScript 子类," + + "再挂 EnemyAiBrain 组件并把 _definitionId 设为该 id。"); report.Add("多阶段 Boss 可在此 GameObject 上继续 AddComponent 阶段切换控制器。"); Selection.activeGameObject = go; @@ -604,7 +607,8 @@ namespace BaseGames.Editor report.Add("★ 将此对象放置于天花板,调整位置使 CapsuleCollider 正好贴合天花板底面。"); report.Add("★ HurtBox.enabled 初始为 false;钻出后由 CeilingHangStrikeAbility 在悬挂窗口开启。"); report.Add("★ attack_range 槽位为正下方 BoxCast(玩家经过检测区);按需在 Inspector 调整 offset/size。"); - report.Add("★ 挂载行为树 BehaviorTree 组件,指定 E002_HuangZhi.asset。"); + report.Add("★ AI(BrainGraph):E002 尚无 AI 定义——先写 [AiDefinition(\"E002\")] 的 AiScript 子类," + + "再挂 EnemyAiBrain 并设 _definitionId=E002。"); report.Add("★ BD 树逻辑建议:Idle(悬挂)→ IsSensorDetecting(aggro) → UseAbility(CeilingDrop) → IsGrounded → Patrol(Pace)。"); Undo.CollapseUndoOperations(undoGroup); @@ -693,7 +697,8 @@ namespace BaseGames.Editor SetupPerceptionSystemSlots(sensorHub, new[] { "aggro", "los" }, report); report.Add("★ 将此对象放置于天花板下方;EnemyAbilityTrigger 在出生时(executeOnSpawn)自动、或被场景触发器调用 Trigger() 时执行下坠能力(e003_fall)。"); - report.Add("★ 挂载行为树 BehaviorTree 组件,指定对应外部行为树资产。"); + report.Add("★ AI(BrainGraph):该敌人尚无 AI 定义——先写 [AiDefinition(\"\")] 的 AiScript 子类," + + "再挂 EnemyAiBrain 并把 _definitionId 设为该 id。"); Undo.CollapseUndoOperations(undoGroup); Selection.activeGameObject = go; @@ -824,7 +829,8 @@ namespace BaseGames.Editor SetupPerceptionSystemSlots(sensorHub, new[] { "aggro", "attack_melee", "attack_range", "sight" }, report); report.Add("★ AppearAbility._appearClip / FacePlayerAbility._faceClip 等动画 Clip 待美术接入后在 Inspector 指定。"); report.Add("★ 在 EnemyDeathSequence._deathPreClip 配置死亡前摇动画(两阶段死亡 Death_Pre 无敌)。"); - report.Add("★ 挂载行为树 BehaviorTree 组件,指定对应外部行为树资产。"); + report.Add("★ AI(BrainGraph):该敌人尚无 AI 定义——先写 [AiDefinition(\"\")] 的 AiScript 子类," + + "再挂 EnemyAiBrain 并把 _definitionId 设为该 id。"); Undo.CollapseUndoOperations(undoGroup); Selection.activeGameObject = go; @@ -935,7 +941,8 @@ namespace BaseGames.Editor SetupPerceptionSystemSlots(sensorHub, new[] { "aggro", "attack_melee", "attack_range", "los" }, report); report.Add("★ 在 EnemyDeathSequence._deathPreClip 上添加 AnimationEvent 调用 SpawnProjectile(\"spawn_e003\"),由 EnemySpawnerOnEvent 从对象池生成幼蛭(ENM_YouZhi)。"); - report.Add("★ 挂载行为树 BehaviorTree 组件,指定对应外部行为树资产。"); + report.Add("★ AI(BrainGraph):该敌人尚无 AI 定义——先写 [AiDefinition(\"\")] 的 AiScript 子类," + + "再挂 EnemyAiBrain 并把 _definitionId 设为该 id。"); Undo.CollapseUndoOperations(undoGroup); Selection.activeGameObject = go; @@ -1036,7 +1043,8 @@ namespace BaseGames.Editor } SetupPerceptionSystemSlots(sensorHub, new[] { "aggro", "los" }, report); - report.Add("★ 挂载行为树 BehaviorTree 组件,指定 E006_Huan.asset。"); + report.Add("★ AI(BrainGraph):E006 尚无 AI 定义——先写 [AiDefinition(\"E006\")] 的 AiScript 子类," + + "再挂 EnemyAiBrain 并设 _definitionId=E006。"); Undo.CollapseUndoOperations(undoGroup); Selection.activeGameObject = go; @@ -1181,7 +1189,8 @@ namespace BaseGames.Editor report.Add("★ FanCombo 三段 HitBox 与 Tornado HitBox 已挂入 BossSkillExecutor._hitBoxes。"); report.Add("★ 将 BoomerangMuzzle / TornadoMuzzle / WindStoneMuzzle 拖入对应 BossSkillSO 的发射点字段(如有)。"); report.Add("★ 回旋扇收招/阶段过渡/击败演出等动画 Clip 待美术接入后在 ChaoFengBoss Inspector 指定。"); - report.Add("★ 挂载行为树 BehaviorTree 组件,指定 Boss_ChaoFeng.asset。"); + report.Add("★ AI(BrainGraph):嘲风尚无 AI 定义——先写 [AiDefinition(\"ChaoFeng\")] 的 AiScript 子类," + + "再挂 EnemyAiBrain 并设 _definitionId=ChaoFeng(技能执行仍由 BossSkillExecutor 负责)。"); Undo.CollapseUndoOperations(undoGroup); Selection.activeGameObject = go;