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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user