Files
zeling_v2/Assets/_Game/Scripts/Enemies/AI/BD_CanUseBossSkill.cs
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#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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