diff --git a/Assets/_Game/Scripts/Enemies/Abilities/AbilityCategory.cs b/Assets/_Game/Scripts/Enemies/Abilities/AbilityCategory.cs
new file mode 100644
index 00000000..93374f68
--- /dev/null
+++ b/Assets/_Game/Scripts/Enemies/Abilities/AbilityCategory.cs
@@ -0,0 +1,11 @@
+namespace BaseGames.Enemies.Abilities
+{
+ /// 能力调度分类:攻击选择器只从 类里选招。
+ public enum AbilityCategory
+ {
+ None, // 未分类(默认,不参与选招)
+ Attack, // 攻击招式(选择器候选)
+ Movement, // 位移/机动
+ Utility // 辅助/增益
+ }
+}
diff --git a/Assets/_Game/Scripts/Enemies/Abilities/AttackSelectionMode.cs b/Assets/_Game/Scripts/Enemies/Abilities/AttackSelectionMode.cs
new file mode 100644
index 00000000..5f704bf0
--- /dev/null
+++ b/Assets/_Game/Scripts/Enemies/Abilities/AttackSelectionMode.cs
@@ -0,0 +1,9 @@
+namespace BaseGames.Enemies.Abilities
+{
+ /// 多攻击选招策略。
+ public enum AttackSelectionMode
+ {
+ WeightedRandom, // 合格集内按 weight 加权随机
+ Priority // 合格集内取 priority 最高(并列取首个)
+ }
+}
diff --git a/Assets/_Game/Scripts/Enemies/Abilities/EnemyAbilitySO.cs b/Assets/_Game/Scripts/Enemies/Abilities/EnemyAbilitySO.cs
index 6f8a599c..856c200e 100644
--- a/Assets/_Game/Scripts/Enemies/Abilities/EnemyAbilitySO.cs
+++ b/Assets/_Game/Scripts/Enemies/Abilities/EnemyAbilitySO.cs
@@ -42,5 +42,17 @@ namespace BaseGames.Enemies.Abilities
public string exclusionGroup = "";
[Tooltip("AI 调度优先级(值越高越优先被选择,冷却就绪时对比)")]
[Min(0)] public int priority = 0;
+
+ [Header("选招(攻击选择器用)")]
+ [Tooltip("能力调度分类;攻击选择器只从 Attack 类里选招")]
+ public AbilityCategory category = AbilityCategory.None;
+ [Tooltip("WeightedRandom 模式下的相对权重(越大越易被选)")]
+ [Min(0f)] public float weight = 1f;
+
+ [Header("攻击触发范围(招式自管,圆形)")]
+ [Tooltip("触发半径(m);category==Attack 时必须 > 0,否则永远够不着(Awake 报错)")]
+ [Min(0f)] public float rangeRadius = 0f;
+ [Tooltip("范围圆心相对敌人的偏移(m),X 随朝向翻转")]
+ public Vector2 rangeOffset = Vector2.zero;
}
}
diff --git a/Assets/_Game/Scripts/Enemies/EnemyStatsSO.cs b/Assets/_Game/Scripts/Enemies/EnemyStatsSO.cs
index 48ff63d3..c8761222 100644
--- a/Assets/_Game/Scripts/Enemies/EnemyStatsSO.cs
+++ b/Assets/_Game/Scripts/Enemies/EnemyStatsSO.cs
@@ -39,6 +39,11 @@ namespace BaseGames.Enemies
[Header("战斗")]
[Min(0f)] public float AttackCooldown = 1f;
+ [Header("攻击选招策略")]
+ [Tooltip("到攻击范围内如何从多个候选招里选一个")]
+ public BaseGames.Enemies.Abilities.AttackSelectionMode attackSelectionMode
+ = BaseGames.Enemies.Abilities.AttackSelectionMode.WeightedRandom;
+
[Header("追击 & AI 阶段")]
[Tooltip("是否有警觉状态:勾选=未发现态进入视野先进警觉(朝向+警觉动画)再追击;不勾选=进入追逐感知直接追击")]
public bool HasAlertState = true;