using Cielonos.Core.Interaction; using UnityEngine; namespace Cielonos.MainGame.Interactions { /// /// 出口传送门。战斗房间全部敌人清空后才激活,玩家交互后通知 RunManager 当前节点已完成。 /// - 普通/精英战斗节点:完成后回到地图选择 /// - Boss 节点:完成后进入结算画面 /// 不需要在脚本中区分节点类型,由 RunManager.CompleteCurrentNode() 内部判断。 /// public class ExitGate : InteractableObjectBase { private void Start() { // 初始不可交互,等待战斗房间清空 SetInteractable(false); CombatManager.CombatRoomSm.OnRoomCleared += OnRoomCleared; } private void OnDestroy() { CombatManager.CombatRoomSm.OnRoomCleared -= OnRoomCleared; } protected override void InitializeChoices() { choices.Add(new InteractionChoice("Leave Zone", CompleteNode)); } /// 战斗房间清空后激活传送门,允许玩家交互。 private void OnRoomCleared() { SetInteractable(true); Debug.Log("[ExitGate] 战斗房间已清空,传送门已激活。"); } /// 通知 RunManager 当前节点已完成,触发阶段切换。 private void CompleteNode() { RunManager.Instance.CompleteCurrentNode(); } } }