using UnityEngine; using System.Collections.Generic; public class BattleStartAction : RecordAction { private bool isRun = false; public BattleStartAction(BattleField _battleField) : base(RecordActionType.BattleStart, _battleField, null) { } public override bool IsFinished() { return isFinish; } public override void Run() { base.Run(); if (isRun) return; // 隐藏部分UI EventBroadcast.Instance.Broadcast(EventName.DISPLAY_BATTLE_UI, battleField.guid, false); // battleField.battleRootNode.SetSortingOrder(); battleField.StartBattle(() => { if (1 == battleField.MapID) { // 主线不播战斗开始 StartBattleCallback(); return; } battleField.battleRootNode.battleStartNode.SetActive(true); UniTaskExtension.DelayTime((GameObject)null, 1f, () => { battleField.battleRootNode.battleStartNode.SetActive(false); StartBattleCallback(); }); }); isRun = true; } private void StartBattleCallback() { isFinish = true; EventBroadcast.Instance.Broadcast(EventName.DISPLAY_BATTLE_UI, battleField.guid, true); battleField.DistributeNextPackage(); } public override void ForceFinish() { //正常开始之后到界面出现之前都点不了 所以这边不用强制完成 接口留着 base.ForceFinish(); // 完成就开始显示UI } }