From 47bae3318d299fed896620e70829a21087e7b0c1 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期五, 27 二月 2026 19:22:10 +0800
Subject: [PATCH] 492 武将登场-客户端 主键界面右侧按钮优化逻辑,100毫秒判断一次需不要刷新,避免刷新按钮个数次造成卡顿
---
Main/System/Battle/SkillEffect/BulletSkillEffect.cs | 86 ++++++++++++++++++++++---------------------
1 files changed, 44 insertions(+), 42 deletions(-)
diff --git a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
index 5221f5c..1022169 100644
--- a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
@@ -18,8 +18,8 @@
private int scatterTotalTargets = 0;
- public BulletSkillEffect(SkillBase _skillBase, SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack)
- : base(_skillBase, _skillConfig, _caster, _tagUseSkillAttack)
+ public BulletSkillEffect(SkillBase _skillBase, SkillConfig _skillConfig, SkillSkinConfig _skillSkinConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack)
+ : base(_skillBase, _skillConfig, _skillSkinConfig, _caster, _tagUseSkillAttack)
{
}
@@ -30,7 +30,7 @@
{
base.OnMiddleFrameEnd(times, index);
// 寮瑰皠 鍙﹀鐨勫仛娉曚簡
- if (skillConfig.effectType == SkillEffectType.Bullet && skillConfig.BulletPath == 4)
+ if (skillSkinConfig.effectType == SkillEffectType.Bullet && skillSkinConfig.BulletPath == 4)
{
var hurt = tagUseSkillAttack.HurtList[0];
BattleObject targetObject = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
@@ -146,9 +146,9 @@
continue;
}
- minimumIndex = Mathf.Min(target.teamHero.positionNum, minimumIndex);
+ minimumIndex = Mathf.Min(target.GetPositionNum(), minimumIndex);
- if (target.Camp == battleCamp && target.teamHero.positionNum < 3)
+ if (target.Camp == battleCamp && target.GetPositionNum() < 3)
{
targetIndex = 1;
break;
@@ -172,22 +172,22 @@
private void ShotToIndex(BattleCamp camp, int targetIndex, int bulletIndex)
{
RectTransform targetTransform = caster.battleField.GetTeamNode(camp, targetIndex);
- BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp);
+ BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillSkinConfig.BulletEffectId, caster.GetRectTransform(), caster.Camp, caster.GetModelScale());
RectTransform effectTrans = effectPlayer.transform as RectTransform;
- var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, targetTransform, tagUseSkillAttack.HurtList.ToList(), bulletIndex, (index, hitList) =>
+ var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, skillSkinConfig, effectPlayer, targetTransform, tagUseSkillAttack.HurtList.ToList(), bulletIndex, (index, hitList) =>
{
if (isFinish)
return;
// 鍑讳腑灏遍攢姣佸瓙寮�
- caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
+ caster.battleField.battleEffectMgr.RemoveEffect(skillSkinConfig.BulletEffectId, effectPlayer);
// 鎾斁瀛愬脊鐖嗙偢鐗规晥
BattleCamp battleCamp = skillConfig.TagFriendly != 0 ? caster.Camp : caster.GetEnemyCamp();
// 棣栧厛鏄洰鏍囪韩涓婄垎鐐�
- PlayExplosionEffect(skillConfig.ExplosionEffectId, targetTransform, caster.Camp);
- PlayExplosionEffect(skillConfig.ExplosionEffect2, targetTransform, caster.Camp);
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffectId, targetTransform, caster.Camp, 1f);
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffect2, targetTransform, caster.Camp, 1f);
foreach (var hurt in hitList)
{
@@ -198,8 +198,8 @@
continue;
}
- PlayExplosionEffect(skillConfig.ExplosionEffect3, targetObj.heroGo.transform, caster.Camp);
- PlayExplosionEffect(skillConfig.ExplosionEffect4, targetObj.heroGo.transform, caster.Camp);
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffect3, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffect4, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
}
// 琛ㄧ幇瀛愬脊椋炶鍒扮洰鏍囦綅缃�
@@ -238,13 +238,13 @@
continue;
}
- if (target.Camp == battleCamp && target.teamHero.positionNum > 3)
+ if (target.Camp == battleCamp && target.GetPositionNum() > 3)
{
targetIndex = 4;
break;
}
- maxinumIndex = Mathf.Max(target.teamHero.positionNum, maxinumIndex);
+ maxinumIndex = Mathf.Max(target.GetPositionNum(), maxinumIndex);
}
if (targetIndex == int.MaxValue)
@@ -276,7 +276,7 @@
continue;
}
- minimumIndex = Mathf.Min(target.teamHero.positionNum, minimumIndex);
+ minimumIndex = Mathf.Min(target.GetPositionNum(), minimumIndex);
}
if (minimumIndex != int.MaxValue)
@@ -296,7 +296,7 @@
private void SelfShoting(int index)
{
// 榛樿鍙�夎嚜宸憋紝鑷繁涓轰富鐩爣
- ShotToIndex(caster.Camp, caster.teamHero.positionNum, index);
+ ShotToIndex(caster.Camp, caster.GetPositionNum(), index);
}
// 鏁e皠
@@ -307,7 +307,7 @@
{
scatterHitCount = 0;
// 鎬诲嚮涓暟 = 鍙戝皠娆℃暟 脳 鐩爣鏁伴噺
- scatterTotalTargets = skillConfig.ActiveFrames.Length * tagUseSkillAttack.HurtList.Length;
+ scatterTotalTargets = skillSkinConfig.ActiveFrames.Length * tagUseSkillAttack.HurtList.Length;
}
// 澶勭悊鏁e皠閫昏緫
@@ -328,7 +328,7 @@
private void ScatterShot(BattleObject target, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, int bulletIndex, int order)
{
- BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp);
+ BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillSkinConfig.BulletEffectId, caster.GetRectTransform(), caster.Camp, caster.GetModelScale());
bool shotToSelf = target.ObjID == caster.ObjID;
@@ -336,7 +336,7 @@
var tempOrder = order;
- var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans,
+ var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, skillSkinConfig, effectPlayer, target.GetRectTransform(),
new List<HB427_tagSCUseSkill.tagSCUseSkillHurt> { hurt }, bulletIndex, (index, hitList) =>
{
foreach (var hurt in hitList)
@@ -348,16 +348,16 @@
continue;
}
- PlayExplosionEffect(skillConfig.ExplosionEffectId, targetObj.heroGo.transform, caster.Camp);
- PlayExplosionEffect(skillConfig.ExplosionEffect2, targetObj.heroGo.transform, caster.Camp);
- PlayExplosionEffect(skillConfig.ExplosionEffect3, targetObj.heroGo.transform, caster.Camp);
- PlayExplosionEffect(skillConfig.ExplosionEffect4, targetObj.heroGo.transform, caster.Camp);
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffectId, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffect2, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffect3, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffect4, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
}
// 琛ㄧ幇瀛愬脊椋炶鍒扮洰鏍囦綅缃�
onHit?.Invoke(index, hitList);
// 鍑讳腑灏遍攢姣佸瓙寮�
- caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
+ caster.battleField.battleEffectMgr.RemoveEffect(skillSkinConfig.BulletEffectId, effectPlayer);
// 澧炲姞鏁e皠鍑讳腑璁℃暟
scatterHitCount++;
@@ -374,7 +374,7 @@
protected void ShotToTarget(BattleObject target, int bulletIndex)
{
- BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp);
+ BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillSkinConfig.BulletEffectId, caster.GetRectTransform(), caster.Camp, caster.GetModelScale());
bool shotToSelf = target.ObjID == caster.ObjID;
@@ -382,9 +382,11 @@
int bounceHitIndex = 0;
- var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans, tagUseSkillAttack.HurtList.ToList(), bulletIndex, (index, hitList) =>
+ int tempBulletIndex = bulletIndex;
+
+ var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, skillSkinConfig, effectPlayer, target.GetRectTransform(), tagUseSkillAttack.HurtList.ToList(), bulletIndex, (index, hitList) =>
{
- if (skillConfig.BulletPath == 4)
+ if (skillSkinConfig.BulletPath == 4)
{
if (bounceHitIndex >= hitList.Count)
{
@@ -394,10 +396,10 @@
BattleObject targetObj = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
if (targetObj != null)
{
- PlayExplosionEffect(skillConfig.ExplosionEffectId, targetObj.heroGo.transform, caster.Camp);
- PlayExplosionEffect(skillConfig.ExplosionEffect2, targetObj.heroGo.transform, caster.Camp);
- PlayExplosionEffect(skillConfig.ExplosionEffect3, targetObj.heroGo.transform, caster.Camp);
- PlayExplosionEffect(skillConfig.ExplosionEffect4, targetObj.heroGo.transform, caster.Camp);
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffectId, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffect2, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffect3, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffect4, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
}
else
{
@@ -407,15 +409,15 @@
// 琛ㄧ幇瀛愬脊椋炶鍒扮洰鏍囦綅缃�
onHit?.Invoke(index, new List<HB427_tagSCUseSkill.tagSCUseSkillHurt> { hurt });
- if (bulletIndex == tagUseSkillAttack.HurtList.Length - 1)
+ if (bounceHitIndex >= tagUseSkillAttack.HurtList.Length)
{
- caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
+ caster.battleField.battleEffectMgr.RemoveEffect(skillSkinConfig.BulletEffectId, effectPlayer);
}
if (isFinish)
return;
- if (bulletIndex >= skillConfig.ActiveFrames.Length - 1 && bounceHitIndex >= hitList.Count)
+ if (tempBulletIndex >= skillSkinConfig.ActiveFrames.Length - 1 && bounceHitIndex >= hitList.Count)
{
isFinish = true;
}
@@ -431,22 +433,22 @@
continue;
}
- PlayExplosionEffect(skillConfig.ExplosionEffectId, targetObj.heroGo.transform, caster.Camp);
- PlayExplosionEffect(skillConfig.ExplosionEffect2, targetObj.heroGo.transform, caster.Camp);
- PlayExplosionEffect(skillConfig.ExplosionEffect3, targetObj.heroGo.transform, caster.Camp);
- PlayExplosionEffect(skillConfig.ExplosionEffect4, targetObj.heroGo.transform, caster.Camp);
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffectId, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffect2, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffect3, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+ PlayExplosionEffect(skillSkinConfig.ExplosionEffect4, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
}
// 琛ㄧ幇瀛愬脊椋炶鍒扮洰鏍囦綅缃�
onHit?.Invoke(index, hitList);
// 鍑讳腑灏遍攢姣佸瓙寮�
- caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
+ caster.battleField.battleEffectMgr.RemoveEffect(skillSkinConfig.BulletEffectId, effectPlayer);
if (isFinish)
return;
- if (bulletIndex >= skillConfig.ActiveFrames.Length - 1)
+ if (bulletIndex >= skillSkinConfig.ActiveFrames.Length - 1)
{
isFinish = true;
}
@@ -460,12 +462,12 @@
- protected void PlayExplosionEffect(int effectId, Transform parent, BattleCamp camp)
+ protected void PlayExplosionEffect(int effectId, Transform parent, BattleCamp camp, float _scaleRatio)
{
if (effectId <= 0)
return;
- var effect = caster.battleField.battleEffectMgr.PlayEffect(caster, effectId, parent, camp);
+ var effect = caster.battleField.battleEffectMgr.PlayEffect(caster, effectId, parent, camp, _scaleRatio);
if (effect != null)
{
effect.transform.localRotation = parent.localRotation;
--
Gitblit v1.8.0