From 99a11d2bb19d74f6cc8584ac16838062af4fb301 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 03 四月 2026 11:24:07 +0800
Subject: [PATCH] webgl 优化
---
Main/System/Battle/Buff/BattleObjectBuffMgr.cs | 39 +++++++++++++++++++++++++++++----------
1 files changed, 29 insertions(+), 10 deletions(-)
diff --git a/Main/System/Battle/Buff/BattleObjectBuffMgr.cs b/Main/System/Battle/Buff/BattleObjectBuffMgr.cs
index 20013c0..63faa2d 100644
--- a/Main/System/Battle/Buff/BattleObjectBuffMgr.cs
+++ b/Main/System/Battle/Buff/BattleObjectBuffMgr.cs
@@ -27,6 +27,12 @@
{ BattleConst.PassiveSkillLimitGroup, false },
};
+ // 缂撳瓨Run()娓呯悊鐢ㄧ殑鍒楄〃锛岄伩鍏嶆瘡甯у垎閰�
+ private List<int> _removeEffectCache = new List<int>();
+
+ // 缂撳瓨OnBuffChanged鍥炶皟鐢ㄧ殑鍒楄〃锛岄伩鍏嶆瘡娆″垎閰�
+ private List<HB428_tagSCBuffRefresh> _buffValueCache = new List<HB428_tagSCBuffRefresh>();
+
public void Init(BattleObject _battleObject)
{
battleObject = _battleObject;
@@ -48,7 +54,7 @@
public void Run()
{
- List<int> removeEffectList = new List<int>();
+ _removeEffectCache.Clear();
// 璺熼殢BattleObject
foreach (var kv in buffEffectDict)
{
@@ -58,7 +64,7 @@
if (effectPlayer.isBindBone)
{
effectPlayer.FollowBoneXY();
- return;
+ continue;
}
int[] effectPos = effectPlayer.effectConfig.effectPos;
effectPlayer.transform.position = battleObject.GetPosition();
@@ -69,11 +75,11 @@
}
else
{
- removeEffectList.Add(kv.Key);
+ _removeEffectCache.Add(kv.Key);
}
}
- foreach (var effectId in removeEffectList)
+ foreach (var effectId in _removeEffectCache)
{
buffEffectDict.Remove(effectId);
}
@@ -234,8 +240,15 @@
return;
}
- var buffList = vNetDataList.Where(buff => buff != null && buff.IsAdd != 0).ToList();
- var refreshList = vNetDataList.Where(buff => buff != null && buff.IsAdd == 0).ToList();
+ var buffList = new List<HB428_tagSCBuffRefresh>();
+ var refreshList = new List<HB428_tagSCBuffRefresh>();
+ for (int i = 0; i < vNetDataList.Count; i++)
+ {
+ var buff = vNetDataList[i];
+ if (buff == null) continue;
+ if (buff.IsAdd != 0) buffList.Add(buff);
+ else refreshList.Add(buff);
+ }
// 澶勭悊闇�瑕佹挱鏀惧姩鐢荤殑buff (IsAdd != 0)
if (buffList.Count > 0)
@@ -345,7 +358,10 @@
UpdateControlState();
- battleObject.RefreshBuff(buffDataDict.Values.ToList());
+ _buffValueCache.Clear();
+ foreach (var kv in buffDataDict)
+ _buffValueCache.Add(kv.Value);
+ battleObject.RefreshBuff(_buffValueCache);
onBuffChanged?.Invoke();
// bool isUnderControl = false;
@@ -415,11 +431,14 @@
public List<HB428_tagSCBuffRefresh> GetBuffIconList()
{
- List<HB428_tagSCBuffRefresh> buffList = buffDataDict.Values.Where(buff =>
+ List<HB428_tagSCBuffRefresh> buffList = new List<HB428_tagSCBuffRefresh>();
+ foreach (var kv in buffDataDict)
{
+ var buff = kv.Value;
SkillConfig skillConfig = SkillConfig.Get((int)buff.SkillID);
- return skillConfig != null;
- }).ToList();
+ if (skillConfig != null)
+ buffList.Add(buff);
+ }
return buffList;
}
--
Gitblit v1.8.0