feat(enemy): 攻击能力射程 Gizmo(选中可见)+ category==Attack 的 rangeRadius 自检
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using BaseGames.Core;
|
||||
|
||||
namespace BaseGames.Enemies.Abilities
|
||||
{
|
||||
@@ -8,7 +10,7 @@ namespace BaseGames.Enemies.Abilities
|
||||
/// 由对应 EnemyAbilityBase 子类组件读取并执行。
|
||||
/// </summary>
|
||||
[CreateAssetMenu(menuName = "BaseGames/Enemies/Enemy Ability", fileName = "EAB_")]
|
||||
public class EnemyAbilitySO : ScriptableObject
|
||||
public class EnemyAbilitySO : ScriptableObject, IValidatable
|
||||
{
|
||||
[Header("标识")]
|
||||
[Tooltip("BD 任务通过此 Id 调用能力(如 \"melee_combo\" / \"blink_strike\")")]
|
||||
@@ -54,5 +56,13 @@ namespace BaseGames.Enemies.Abilities
|
||||
[Min(0f)] public float rangeRadius = 0f;
|
||||
[Tooltip("范围圆心相对敌人的偏移(m),X 随朝向翻转")]
|
||||
public Vector2 rangeOffset = Vector2.zero;
|
||||
|
||||
/// <summary>SOValidationRunner 自动扫描调用:校验 Attack 类招式必须配置有效射程。</summary>
|
||||
public IEnumerable<ValidationResult> Validate()
|
||||
{
|
||||
if (category == AbilityCategory.Attack && rangeRadius <= 0f)
|
||||
yield return ValidationResult.Error(
|
||||
$"能力 \"{abilityId}\" category=Attack 但 rangeRadius<=0,攻击选择器永远选不中该招式,请补齐 rangeRadius。");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user