From 796f2b2e8a0435df7e3cf8e36afeeb69d7b37876 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期六, 13 十二月 2025 16:22:32 +0800
Subject: [PATCH] 0312 特权卡立即跳过不受功能开启影响(20级) 优化挑战BOSS引导提示时机 吞噬红点优武将"新"提醒 优化武将突破红点 满星不能遣散问题
---
Main/Component/UI/Effect/BattleEffectPlayer.cs | 68 +++++++++++++++++++++++++++++----
1 files changed, 59 insertions(+), 9 deletions(-)
diff --git a/Main/Component/UI/Effect/BattleEffectPlayer.cs b/Main/Component/UI/Effect/BattleEffectPlayer.cs
index 8dbbc57..5c89ea8 100644
--- a/Main/Component/UI/Effect/BattleEffectPlayer.cs
+++ b/Main/Component/UI/Effect/BattleEffectPlayer.cs
@@ -41,6 +41,8 @@
private float m_Alpha = 1f;
+ public float scaleFactor = 1f;// 闀挎湡涓�1锛屽彧鍦ㄩ渶瑕佽窡妯″瀷涓�璧风缉鏀剧殑鏃跺�欐洿鏀� 鍊间负teamHero.ModelScale
+
public float Alpha
{
get
@@ -102,6 +104,8 @@
public GameObjectPoolManager.GameObjectPool pool;
+ public BattleField battleField;
+
public Action onComplete;
private bool isPlaying = false;
@@ -159,6 +163,8 @@
// 鏈夌壒鏁堝彲鑳藉甫spine鍙堝甫unity鐗规晥鐨勬儏鍐�
spineComp = gameObject.GetComponentInChildren<SkeletonAnimation>(true);
+
+
if (effectConfig.effectPos != null && effectConfig.effectPos.Length >= 2)
{
rectTrans.anchoredPosition += new Vector2((isRedCamp ? 1f : -1f) * effectConfig.effectPos[0], effectConfig.effectPos[1]);
@@ -168,6 +174,7 @@
{
rectTrans.localScale *= effectConfig.effectScale;
}
+
spineComp.loop = effectConfig.isLoop != 0;
}
@@ -222,7 +229,7 @@
bool isHeroFront = funcIsHeroFront();
int finalSortingOrder = isHeroFront ?
- (isEffectFront ? BattleConst.ActiveHeroActionSortingOrder : BattleConst.ActiveHeroBackSortingOrder) : (isEffectFront ? BattleConst.UnactiveHeroFrontSortingOrder : BattleConst.UnactiveHeroBackSortingOrder);
+ (isEffectFront ? BattleConst.ActiveHeroActionSortingOrder + 1 : BattleConst.ActiveHeroBackSortingOrder) : (isEffectFront ? BattleConst.UnactiveHeroFrontSortingOrder : BattleConst.UnactiveHeroBackSortingOrder);
blocker.SetSortingOrder(finalSortingOrder);
@@ -343,23 +350,43 @@
{
PlayUnityEffect();
}
+
+ battleField?.soundManager.PlayEffectSound(effectConfig.audio);
+
OnAlphaChanged();
}
protected void PlaySpineEffect()
{
- // 杩欓噷鏄函spine鐨勯�昏緫
-
if (spineComp == null)
{
Debug.LogError("BattleEffectPlayer spineComp is null, effect id is " + effectId);
return;
}
- SkeletonDataAsset skeletonDataAsset = ResManager.Instance.LoadAsset<SkeletonDataAsset>("UIEffect/" + effectConfig.packageName, effectConfig.fxName);
+ // ===== 绠�鍖栵細鐩存帴浠庣紦瀛樿幏鍙栵紝缂撳瓨鍐呴儴浼氳嚜鍔ㄥ姞杞� =====
+ string directory = "UIEffect/" + effectConfig.packageName;
+ SkeletonDataAsset skeletonDataAsset = BattleResManager.Instance.GetSpineResource(
+ directory,
+ effectConfig.fxName,
+ battleField?.guid
+ );
+
+ if (skeletonDataAsset == null)
+ {
+ Debug.LogError($"BattleEffectPlayer: Failed to load effect spine {effectConfig.fxName}");
+ return;
+ }
+ // ================================
+
spineComp.skeletonDataAsset = skeletonDataAsset;
spineComp.Initialize(true);
spineComp.timeScale = speedRate;
+
+ if (scaleX != 0f && spineComp != null && spineComp.skeleton != null)
+ {
+ spineComp.skeleton.ScaleX = scaleX;
+ }
spineComp.skeleton.A = Alpha;
@@ -378,10 +405,13 @@
spineComp.timeScale = speedRate;
+ spineComp.LateUpdate();
+
+
Spine.Animation animation = spineAnimationState.Data.SkeletonData.Animations.First();
spineAnimationState.SetAnimation(0, animation, effectConfig.isLoop != 0);
- SoundPlayer.Instance.PlayUIAudio(effectConfig.audio);
+ // SoundPlayer.Instance.PlayUIAudio(effectConfig.audio);
}
@@ -415,7 +445,7 @@
}
// 浠庣壒鏁堥鍒朵綋姹犺幏鍙栫壒鏁�
- pool = GameObjectPoolManager.Instance.RequestPool(effectPrefab);
+ pool = GameObjectPoolManager.Instance.GetPool(effectPrefab);
effectTarget = pool.Request();
// 璁剧疆鐖惰妭鐐瑰拰浣嶇疆
effectTarget.transform.SetParent(transform);
@@ -437,7 +467,7 @@
blocker.onSortingChanged = OnSortingChanged;
- SoundPlayer.Instance.PlayUIAudio(effectConfig.audio);
+ // SoundPlayer.Instance.PlayUIAudio(effectConfig.audio);
}
@@ -518,7 +548,7 @@
// 鍒涘缓鍚庣殑鐗规晥浼氳嚜鍔ㄩ殣钘� 闇�瑕佹墜鍔ㄨ皟鐢≒lay鎵嶈兘鎾斁
- public static BattleEffectPlayer Create(int effectId, Transform parent, bool isRedCamp)
+ public static BattleEffectPlayer Create(int effectId, BattleField _battleField, Transform parent, bool isRedCamp, float _scaleRatio)
{
// 鐩存帴鍒涘缓鐗规晥鎾斁鍣紝涓嶄娇鐢ㄥ璞℃睜
BattleEffectPlayer battleEffectPlayer = null;
@@ -526,9 +556,12 @@
GameObject newGo = new GameObject("BattleEffectPlayer_" + effectId);
newGo.transform.SetParent(parent, false);
battleEffectPlayer = newGo.AddComponent<BattleEffectPlayer>();
+ battleEffectPlayer.battleField = _battleField;
battleEffectPlayer.rectTrans = newGo.AddMissingComponent<RectTransform>();
battleEffectPlayer.effectId = effectId;
+
+ battleEffectPlayer.scaleFactor = _scaleRatio;
// 璁剧疆闃佃惀
battleEffectPlayer.isRedCamp = isRedCamp;
@@ -647,11 +680,14 @@
public void BindBone(SkeletonAnimation skeletonAnim, string v)
{
Bone bone = skeletonAnim.skeleton.FindBone(v);
-
+ isBindBone = false;
+ followedBone = null;
if (null == bone)
{
return;
}
+
+ rectTrans.localScale *= scaleFactor;
isBindBone = true;
followedBone = bone;
@@ -670,4 +706,18 @@
boneFollower.Initialize();
boneFollower.LateUpdate();
}
+
+ private float scaleX = 0f;
+
+ public void SetScaleX(float v)
+ {
+ if (spineComp != null && spineComp.skeleton != null)
+ {
+ spineComp.skeleton.ScaleX = v;
+ }
+ else
+ {
+ scaleX = v;
+ }
+ }
}
--
Gitblit v1.8.0