yyl
2026-02-02 a8950d5ee36a78915222e6063d1de043aa1be89b
125 战斗卡顿问题
7个文件已修改
171 ■■■■■ 已修改文件
Main/System/Battle/BattleEffectMgr.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleField/BattleField.cs 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleField/StoryBattleField.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleManager.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleObject/BattleObjMgr.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleTweenMgr.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/RecordPlayer/RecordPlayer.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleEffectMgr.cs
@@ -11,6 +11,11 @@
    public void Init(BattleField _battleField)
    {
        Reload(_battleField);
    }
    public void Reload(BattleField _battleField)
    {
        Release();
        battleField = _battleField;
    }
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)
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)
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;
    }
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)
    {
Main/System/Battle/BattleTweenMgr.cs
@@ -13,6 +13,11 @@
    public void Init(BattleField _battleField)
    {
        Reload(_battleField);
    }
    public void Reload(BattleField _battleField)
    {
        Release();
        battleField = _battleField;
    }
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;