Files
zeling_v2/Assets/_Game/Scripts/Enemies/AI/BD_CanUseBossSkill.cs
T
joywayer 520f84999b Add enemy respawner and related components for room lifecycle management
- Implemented EnemyRespawner to manage enemy spawning and respawning within rooms.
- Added IRoomLifecycle interface for room activation and dormancy handling.
- Created supporting classes and metadata for enemy perception and threat assessment.
- Established streaming system components for room state management and transitions.
- Added necessary metadata files for new scripts to ensure proper integration with Unity.
2026-05-23 21:23:09 +08:00

42 lines
1.3 KiB
C#

#if GRAPH_DESIGNER
using Opsive.BehaviorDesigner.Runtime.Tasks;
using Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals;
using UnityEngine;
using BaseGames.Boss;
namespace BaseGames.Enemies.AI
{
/// <summary>
/// BD Conditional:检查 Boss 技能是否冷却就绪。
/// 支持拖拽 BossSkillSO 或直接填写 skillId 字符串(SO 优先)。
/// </summary>
[TaskName("Can Use Boss Skill?")]
[TaskCategory("BaseGames/Enemy/Boss")]
[TaskDescription("检查指定 Boss 技能是否在当前阶段可用且冷却就绪")]
public class BD_CanUseBossSkill : Conditional
{
[SerializeField] private BossSkillSO m_SkillSO;
[SerializeField] private string m_SkillId;
private BossBase _boss;
private BossSkillExecutor _executor;
public override void OnAwake()
{
_boss = GetComponent<BossBase>();
_executor = transform.GetComponentInChildren<BossSkillExecutor>();
}
public override TaskStatus OnUpdate()
{
if (_executor == null) return TaskStatus.Failure;
string id = m_SkillSO != null ? m_SkillSO.skillId : m_SkillId;
if (string.IsNullOrEmpty(id)) return TaskStatus.Failure;
return _executor.CanUseSkill(id) ? TaskStatus.Success : TaskStatus.Failure;
}
}
}
#endif