public void StartBattle(BattleStartParams customParams) { Debug.Log("StartBattle called"); if (IsInBattle) { return; } if (!BattleboxHelper.Instance.CanEnterBattle(_player.View.transform.position)) { return; } IsInBattle = true; m_battleParams = customParams; //初始化战斗model BattleModel = new BattleFieldModel(); //初始化范围逻辑 rangeLogic = new RangeLogic(BattleboxHelper.Instance.IsBlockExists, BattleModel.BlockHasRole); //状态初始化 HSUtilsEx.CallWithDelay(this, () => { Debug.Log("-----------HSUtilsEx.CallWithDelay"); BattleboxHelper.Instance.EnterBattle(_player.View.transform.position); //地图上所有单位进入战斗 foreach (var item in m_battleParams.roles) { if (item.View.m_Behavior == MapRoleBehavior.Enemy) { item.EnterBattle(1); } else { item.EnterBattle(0); } } BattleModel.InitBattleModel(); //战场初始化 行动顺序排序这些 BattleStateMechine.Instance.StartStateMechine(OnBattleEnd); //交给战场状态机接管 状态机完成会回调回来 //提示UI Jyx2_UIManager.Instance.ShowUI("CommonTipsUIPanel", TipsType.MiddleTop, "战斗开始"); Jyx2_UIManager.Instance.ShowUI("BattleMainUIPanel", BattleMainUIState.ShowHUD);//展示角色血条 }, 0.5f); var brain = Camera.main.GetComponent <CinemachineBrain>(); if (brain != null) { brain.m_DefaultBlend = new CinemachineBlendDefinition(CinemachineBlendDefinition.Style.Cut, 0); } }
//清扫战场 public void EndBattle() { IsInBattle = false; Jyx2_UIManager.Instance.HideUI("BattleMainUIPanel"); //临时,需要调整 foreach (var role in BattleModel.Roles) { //role.LeaveBattle(); //非KeyRole死亡2秒后尸体消失 if (role.IsDead() && role.View != null && role.View.gameObject != null && !role.View.m_IsKeyRole) { role.View.gameObject.SetActive(false); } } rangeLogic = null; BattleModel.Roles.Clear(); }