- 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.
42 lines
1.3 KiB
C#
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
|