refactor(enemy): 清全库行为树残留,删无人使用的 Boss 技能事件频道

Task 21 Step 2 全库扫描后的收尾:

注释与 Tooltip 里的旧决策层措辞逐处改为只描述功能——
EnemyControlledState / RangedEnemy / FlyingEnemy / SensorSlotNames /
EnemyPoiseComponent / EnemyAnimationConfigSO / EnemyAiBrain。

EnemyQuotaManager 的序列化字段 _maxActiveBehaviorTrees 改名 _maxActiveBrains
(它裁剪的实际是 EnemyAiBrain),带 FormerlySerializedAs。复核确认目前
无任何场景 / 预制体挂载该组件,故无值可丢;属未雨绸缪。

BossSkillEventChannelSO + BossEvents.BossSkillEvent + EVT_BossSkill.asset 删除:
唯一发送方 BossSkillExecutor 已随旧轨删除,复核确认全项目零发送方、零订阅方,
资产 guid 在场景 / 预制体 / Addressables 分组中均无引用。

自检:编译 0 error;EditMode 260/260 通过;
SO 校验 0 error 0 warning;层矩阵 25/25 正确。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-30 17:14:09 +08:00
co-authored by Claude Opus 5
parent 2c569dcf0d
commit cf0ac60fad
16 changed files with 15 additions and 1781 deletions
@@ -5,14 +5,16 @@ using BaseGames.Core.Events;
namespace BaseGames.Enemies
{
/// <summary>
/// 敌人 BehaviorTree 配额管理器(架构 07_EnemyModule §13)。
/// 敌人决策层配额管理器(架构 07_EnemyModule §13)。
/// 每 REBALANCE_INTERVAL 帧,按到玩家距离排序已注册敌人,
/// 仅对最近的 _maxActiveBehaviorTrees 个敌人启用 BT
/// 仅对最近的 _maxActiveBrains 个敌人启用 <see cref="EnemyAiBrain"/>,其余暂停决策与感知
/// 挂载在场景管理器 GameObject 上(每场景一个实例)。
/// </summary>
public class EnemyQuotaManager : MonoBehaviour
{
[SerializeField, Min(1)] private int _maxActiveBehaviorTrees = 12;
[Tooltip("同时保持决策活跃的敌人上限;超出的按距离由远及近暂停")]
[UnityEngine.Serialization.FormerlySerializedAs("_maxActiveBehaviorTrees")]
[SerializeField, Min(1)] private int _maxActiveBrains = 12;
[Tooltip("PlayerController.Start() 广播此频道,替代 FindWithTag")]
[SerializeField] private TransformEventChannelSO _onPlayerSpawned;
@@ -107,11 +109,11 @@ namespace BaseGames.Enemies
if (enemy == null) { _registered.RemoveAt(i); continue; }
var brain = enemy.Brain;
bool active = i < _maxActiveBehaviorTrees;
bool active = i < _maxActiveBrains;
if (brain != null && brain.enabled != active)
{
// 禁用 brain 即停其 Update/Tick等价于旧的禁用行为树
// 禁用 brain 即停其 Update/Tick敌人保持静止但仍存在于场景中
brain.enabled = active;
// 同步暂停/恢复感知系统,避免远处敌人无效 tick
enemy.SensorHub?.SetSuspended(!active);