From a8950d5ee36a78915222e6063d1de043aa1be89b Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 02 二月 2026 19:06:26 +0800
Subject: [PATCH] 125 战斗卡顿问题
---
Main/System/Battle/BattleField/BattleField.cs | 117 +++++++++++++++++++++++++--------------
Main/System/Battle/RecordPlayer/RecordPlayer.cs | 5 +
Main/System/Battle/BattleTweenMgr.cs | 5 +
Main/System/Battle/BattleManager.cs | 7 ++
Main/System/Battle/BattleObject/BattleObjMgr.cs | 8 ++
Main/System/Battle/BattleEffectMgr.cs | 5 +
Main/System/Battle/BattleField/StoryBattleField.cs | 24 ++++---
7 files changed, 115 insertions(+), 56 deletions(-)
diff --git a/Main/System/Battle/BattleEffectMgr.cs b/Main/System/Battle/BattleEffectMgr.cs
index 3e5078c..6e28f34 100644
--- a/Main/System/Battle/BattleEffectMgr.cs
+++ b/Main/System/Battle/BattleEffectMgr.cs
@@ -11,6 +11,11 @@
public void Init(BattleField _battleField)
{
+ Reload(_battleField);
+ }
+
+ public void Reload(BattleField _battleField)
+ {
Release();
battleField = _battleField;
}
diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index 7b0ccb7..3869ec2 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -136,23 +136,9 @@
}
public virtual void Init(int _MapID, int _FuncLineID, JsonData _extendData,
- List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList, byte turnMax)
+ List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList, byte _turnMax)
{
- MapID = _MapID;
- redTeamList = _redTeamList;
- blueTeamList = _blueTeamList;
- FuncLineID = _FuncLineID;
- extendData = _extendData;
- IsBattleFinish = false;
- round = 0;
- this.turnMax = turnMax;
-
- redTeamIndex = 0;
- blueTeamIndex = 0;
-
- // 閲嶇疆姝讳骸澶勭悊璁板綍
- processingDeathObjIds.Clear();
-
+ SetData(_MapID, _FuncLineID, _extendData, _redTeamList, _blueTeamList, turnMax);
battleEffectMgr.Init(this);
battleTweenMgr.Init(this);
recordPlayer.Init(this);
@@ -169,36 +155,12 @@
LoadMap(MapID);
- // 娓呯┖褰撳墠鎴樺満鐨勮閲忚褰曪紙闃叉涓嶅悓鎴樻枟涔嬮棿鐨勬暟鎹贩涔憋級
- if (BattleHeroInfoBar.largestPackUID.ContainsKey(guid))
- {
- BattleHeroInfoBar.largestPackUID.Remove(guid);
- }
- if (BattleHeroInfoBar.largestPackUIDAllObjectsToHp.ContainsKey(guid))
- {
- BattleHeroInfoBar.largestPackUIDAllObjectsToHp.Remove(guid);
- }
- if (BattleHeroInfoBar.largestPackUIDAllObjectsMaxHp.ContainsKey(guid))
- {
- BattleHeroInfoBar.largestPackUIDAllObjectsMaxHp.Remove(guid);
- }
-
- // battleRootNode.SetBackground(ResManager.Instance.LoadAsset<Texture>("Texture/FullScreenBg", "mainui_img_277"));
-
SetBattleStartState();
- if (MapID == 1)
- {
- SetSpeedRatio(BattleManager.Instance.speedGear[AutoFightModel.Instance.fightSpeed - 1]);
- }
- else
- {
- SetSpeedRatio(BattleManager.Instance.speedGear[BattleManager.Instance.speedIndex]);
- }
SetRootNodePosition();
- rejectNewPackage = false;
OnRoundChange?.Invoke(round, turnMax);
PreloadResources(redTeamList, blueTeamList);
+ EventBroadcast.Instance.Broadcast<string>(EventName.BATTLE_START, guid);
#if UNITY_EDITOR
if (Launch.Instance.isOpenSkillLogFile)
@@ -239,7 +201,78 @@
}
#endif
- EventBroadcast.Instance.Broadcast<string>(EventName.BATTLE_START, guid);
+ }
+
+ public virtual void Reload(int _MapID, int _FuncLineID, JsonData _extendData,
+ List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList, byte _turnMax)
+ {
+ SetData(_MapID, _FuncLineID, _extendData, _redTeamList, _blueTeamList, _turnMax);
+ battleEffectMgr.Reload(this);
+ battleTweenMgr.Reload(this);
+ recordPlayer.Reload(this);
+
+ if (blueTeamList == null)
+ {
+ battleObjMgr.Reload(this, redTeamList[redTeamIndex], null);
+ HaveRest();
+ }
+ else
+ {
+ battleObjMgr.Reload(this, redTeamList[redTeamIndex], blueTeamList[blueTeamIndex]);
+ }
+
+ LoadMap(MapID);
+
+ SetBattleStartState();
+
+ SetRootNodePosition();
+
+ OnRoundChange?.Invoke(round, turnMax);
+
+ PreloadResources(redTeamList, blueTeamList);
+
+ }
+
+ public virtual void SetData(int _MapID, int _FuncLineID, JsonData _extendData,
+ List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList, byte _turnMax)
+ {
+ MapID = _MapID;
+ redTeamList = _redTeamList;
+ blueTeamList = _blueTeamList;
+ FuncLineID = _FuncLineID;
+ extendData = _extendData;
+ IsBattleFinish = false;
+ round = 0;
+ this.turnMax = _turnMax;
+
+ redTeamIndex = 0;
+ blueTeamIndex = 0;
+
+ // 閲嶇疆姝讳骸澶勭悊璁板綍
+ processingDeathObjIds.Clear();
+ rejectNewPackage = false;
+ if (MapID == 1)
+ {
+ SetSpeedRatio(BattleManager.Instance.speedGear[AutoFightModel.Instance.fightSpeed - 1]);
+ }
+ else
+ {
+ SetSpeedRatio(BattleManager.Instance.speedGear[BattleManager.Instance.speedIndex]);
+ }
+
+ // 娓呯┖褰撳墠鎴樺満鐨勮閲忚褰曪紙闃叉涓嶅悓鎴樻枟涔嬮棿鐨勬暟鎹贩涔憋級
+ if (BattleHeroInfoBar.largestPackUID.ContainsKey(guid))
+ {
+ BattleHeroInfoBar.largestPackUID.Remove(guid);
+ }
+ if (BattleHeroInfoBar.largestPackUIDAllObjectsToHp.ContainsKey(guid))
+ {
+ BattleHeroInfoBar.largestPackUIDAllObjectsToHp.Remove(guid);
+ }
+ if (BattleHeroInfoBar.largestPackUIDAllObjectsMaxHp.ContainsKey(guid))
+ {
+ BattleHeroInfoBar.largestPackUIDAllObjectsMaxHp.Remove(guid);
+ }
}
protected void PreloadResources(List<TeamBase> redTeamList, List<TeamBase> blueTeamLis)
diff --git a/Main/System/Battle/BattleField/StoryBattleField.cs b/Main/System/Battle/BattleField/StoryBattleField.cs
index c1dceef..00a5716 100644
--- a/Main/System/Battle/BattleField/StoryBattleField.cs
+++ b/Main/System/Battle/BattleField/StoryBattleField.cs
@@ -22,7 +22,6 @@
protected int chapter;// 绔犺妭
protected int wave;// 娉㈡暟
protected int level;// 鍏冲崱
- protected JsonData extendData;
protected MainChapterConfig chapterConfig;
@@ -37,10 +36,21 @@
}
- public override void Init(int MapID, int FuncLineID, JsonData _extendData,
- List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList, byte turnMax)
+ public override void Init(int _MapID, int _FuncLineID, JsonData _extendData,
+ List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList, byte _turnMax)
{
+ base.Init(_MapID, _FuncLineID, _extendData, _redTeamList, _blueTeamList, _turnMax);
+ // 闃叉閲嶅娉ㄥ唽鐨勯棶棰�
+ TeamManager.Instance.OnTeamChange += OnTeamChange;
+
+ FuncPresetManager.Instance.OnFuncPresetUseDataEvent += OnFuncPresetUseDataEvent;
+ }
+
+ public override void SetData(int _MapID, int _FuncLineID, JsonData _extendData,
+ List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList, byte _turnMax)
+ {
+ base.SetData(_MapID, _FuncLineID, _extendData, _redTeamList, _blueTeamList, _turnMax);
chapter = FuncLineID / 10000;
wave = MapID == 1 ? FuncLineID % 100 : 1;//绗嚑娉㈡��
level = (FuncLineID % 10000) / 100;
@@ -49,7 +59,6 @@
chapterConfig = MainChapterConfig.Get(chapter);
levelConfig = MainLevelConfig.Get(level);
- base.Init(MapID, FuncLineID, extendData, _redTeamList, _blueTeamList, turnMax);
if (null == _blueTeamList || _blueTeamList.Count == 0)
{
@@ -62,13 +71,6 @@
// LoadBattleMode();
lastPresetID = TeamManager.Instance.GetMainTeamID();
-
- // 闃叉閲嶅娉ㄥ唽鐨勯棶棰�
- TeamManager.Instance.OnTeamChange.RemoveCompletely(OnTeamChange);
- TeamManager.Instance.OnTeamChange += OnTeamChange;
-
- FuncPresetManager.Instance.OnFuncPresetUseDataEvent.RemoveCompletely(OnFuncPresetUseDataEvent);
- FuncPresetManager.Instance.OnFuncPresetUseDataEvent += OnFuncPresetUseDataEvent;
}
protected override void LoadMap(int mapID)
diff --git a/Main/System/Battle/BattleManager.cs b/Main/System/Battle/BattleManager.cs
index e7a56b2..1719158 100644
--- a/Main/System/Battle/BattleManager.cs
+++ b/Main/System/Battle/BattleManager.cs
@@ -534,11 +534,16 @@
}
battleFields.Add(guid, battleField);
onBattleFieldCreate?.Invoke(guid, battleField);
+ battleField.Init(MapID, FuncLineID, extendData, redTeamList, blueTeamList, vNetData.TurnMax);
+
+ }
+ else
+ {
+ battleField.Reload(MapID, FuncLineID, extendData, redTeamList, blueTeamList, vNetData.TurnMax);
}
- battleField.Init(MapID, FuncLineID, extendData, redTeamList, blueTeamList, vNetData.TurnMax);
return battleField;
}
diff --git a/Main/System/Battle/BattleObject/BattleObjMgr.cs b/Main/System/Battle/BattleObject/BattleObjMgr.cs
index 1fd926f..87813b2 100644
--- a/Main/System/Battle/BattleObject/BattleObjMgr.cs
+++ b/Main/System/Battle/BattleObject/BattleObjMgr.cs
@@ -22,11 +22,15 @@
public void Init(BattleField _battleField, TeamBase _redTeam, TeamBase _blueTeam)
{
+ Reload(_battleField, _redTeam, _blueTeam);
+ }
+
+ public void Reload(BattleField _battleField, TeamBase _redTeam, TeamBase _blueTeam)
+ {
Release();
battleField = _battleField;
ReloadTeam(_redTeam, BattleCamp.Red);
- ReloadTeam(_blueTeam, BattleCamp.Blue, false);
- }
+ ReloadTeam(_blueTeam, BattleCamp.Blue, false); }
public void ReloadTeam(TeamBase teamBase, BattleCamp _camp, bool active = true)
{
diff --git a/Main/System/Battle/BattleTweenMgr.cs b/Main/System/Battle/BattleTweenMgr.cs
index 794664f..6d90650 100644
--- a/Main/System/Battle/BattleTweenMgr.cs
+++ b/Main/System/Battle/BattleTweenMgr.cs
@@ -13,6 +13,11 @@
public void Init(BattleField _battleField)
{
+ Reload(_battleField);
+ }
+
+ public void Reload(BattleField _battleField)
+ {
Release();
battleField = _battleField;
}
diff --git a/Main/System/Battle/RecordPlayer/RecordPlayer.cs b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
index 0113d72..83300c5 100644
--- a/Main/System/Battle/RecordPlayer/RecordPlayer.cs
+++ b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
@@ -28,6 +28,11 @@
public void Init(BattleField _battleField)
{
+ Reload(_battleField);
+ }
+
+ public void Reload(BattleField _battleField)
+ {
Release();
stepForcefinish = false;
battleField = _battleField;
--
Gitblit v1.8.0