From bc871b112bf04df5b5dcc3fadb77ac0f276749c8 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 17 十一月 2025 02:01:58 +0800
Subject: [PATCH] 328 【主界面】坐骑系统 竞技场布阵的显隐 引导点战锤的时候不暂停游戏;引导的时候如果是功能开启,不显示战力变化避免遮挡
---
Main/Component/UI/Effect/BattleEffectPlayer.cs | 169 +++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 125 insertions(+), 44 deletions(-)
diff --git a/Main/Component/UI/Effect/BattleEffectPlayer.cs b/Main/Component/UI/Effect/BattleEffectPlayer.cs
index 480cae5..8dbbc57 100644
--- a/Main/Component/UI/Effect/BattleEffectPlayer.cs
+++ b/Main/Component/UI/Effect/BattleEffectPlayer.cs
@@ -30,11 +30,53 @@
}
}
+ private Bone followedBone;
+
+ public bool isBindBone = false;
+
public bool isRedCamp = true;
public EffectConfig effectConfig;
public float speedRate = 1.5f;
+ private float m_Alpha = 1f;
+
+ public float Alpha
+ {
+ get
+ {
+ return m_Alpha;
+ }
+ set
+ {
+ if (value == m_Alpha)
+ return;
+
+ m_Alpha = value;
+ OnAlphaChanged();
+ }
+ }
+
+ private void OnAlphaChanged()
+ {
+ if (spineComp != null)
+ {
+ var skeleton = spineComp.Skeleton;
+ skeleton.A = Alpha;
+ spineComp.LateUpdate();
+ }
+
+ for (int i = 0; i < rendererList.Count; i++)
+ {
+ var renderer = rendererList[i];
+ if (renderer != null && renderer.material != null && renderer.material.HasProperty("_Color"))
+ {
+ Color color = renderer.material.color;
+ color.a = Alpha;
+ renderer.material.color = color;
+ }
+ }
+ }
[Header("鎾斁瀹屾瘯绔嬪嵆鍥炴敹")]
public bool isReleaseImmediately = false; //鐣岄潰鐗规晥涓�鑸笉闇�瑕佽嚜鎴戦攢姣侊紝璺熼殢鐣岄潰鎴栬�呯埗瀵硅薄閿�姣佸氨琛�
@@ -58,8 +100,6 @@
protected SkeletonAnimation spineComp;
protected Spine.AnimationState spineAnimationState;
- protected int heroSetedSortingOrder;
-
public GameObjectPoolManager.GameObjectPool pool;
public Action onComplete;
@@ -70,11 +110,13 @@
protected virtual void OnEnable()
{
- if (spineComp != null)
- {
- //闅愯棌锛屼細鏈夐潤鎬佹樉绀洪棶棰�
- spineComp.enabled = false;
- }
+ // if (spineComp != null)
+ // {
+ // //闅愯棌锛屼細鏈夐潤鎬佹樉绀洪棶棰�
+ // spineComp.enabled = false;
+ // }
+
+ ApplySortingOrder();
}
@@ -126,6 +168,8 @@
{
rectTrans.localScale *= effectConfig.effectScale;
}
+
+ spineComp.loop = effectConfig.isLoop != 0;
}
protected virtual void Clear()
@@ -159,24 +203,54 @@
onComplete?.Invoke();
}
- public void SetSortingOrder(int _heroSetedSortingOrder)
+ public Func<bool> funcIsHeroFront;
+
+ public void SetSortingOrder(Func<bool> _isHeroFrontCallback)
{
- heroSetedSortingOrder = _heroSetedSortingOrder;
+ funcIsHeroFront = _isHeroFrontCallback;
- int so = heroSetedSortingOrder;
+ ApplySortingOrder();
+ }
- if (null != blocker && effectConfig != null)
+
+ public void ApplySortingOrder()
+ {
+ if (null != blocker && effectConfig != null && funcIsHeroFront != null)
{
- if (BattleConst.UnactiveHeroSortingOrder == heroSetedSortingOrder)
- {
- so = effectConfig.frontBack == 1 ? BattleConst.UnactiveHeroFrontSortingOrder : BattleConst.UnactiveHeroBackSortingOrder;
- }
- else
- {
- so = effectConfig.frontBack == 1 ? BattleConst.ActiveHeroFrontSortingOrder : BattleConst.ActiveHeroBackSortingOrder;
- }
+ bool isEffectFront = effectConfig.frontBack == 1;
- blocker.SetSortingOrder(so);
+ bool isHeroFront = funcIsHeroFront();
+
+ int finalSortingOrder = isHeroFront ?
+ (isEffectFront ? BattleConst.ActiveHeroActionSortingOrder : BattleConst.ActiveHeroBackSortingOrder) : (isEffectFront ? BattleConst.UnactiveHeroFrontSortingOrder : BattleConst.UnactiveHeroBackSortingOrder);
+
+
+ blocker.SetSortingOrder(finalSortingOrder);
+ }
+ }
+
+ public void FollowBoneXY()
+ {
+ if (followedBone == null || !isBindBone)
+ {
+ return;
+ }
+
+ Vector2 vector2 = Vector2.zero;
+
+ if (effectConfig.effectPos != null && effectConfig.effectPos.Length >= 2)
+ {
+ vector2 = new Vector2((isRedCamp ? 1f : -1f) * effectConfig.effectPos[0], effectConfig.effectPos[1]);
+ }
+
+ if (spineComp != null)
+ {
+ spineComp.transform.localPosition = new Vector3(followedBone.WorldX + vector2.x, followedBone.WorldY + vector2.y, 0);
+ }
+
+ if (effectTarget != null)
+ {
+ effectTarget.transform.localPosition = new Vector3(followedBone.WorldX + vector2.x, followedBone.WorldY + vector2.y, 0);
}
}
@@ -269,6 +343,7 @@
{
PlayUnityEffect();
}
+ OnAlphaChanged();
}
protected void PlaySpineEffect()
@@ -286,6 +361,8 @@
spineComp.Initialize(true);
spineComp.timeScale = speedRate;
+ spineComp.skeleton.A = Alpha;
+
spineAnimationState = spineComp.state;
spineAnimationState.Complete -= OnSpineAnimationComplete;
spineAnimationState.Complete += OnSpineAnimationComplete;
@@ -295,24 +372,11 @@
blocker.onSortingChanged = OnSortingChanged;
- if (0 != heroSetedSortingOrder)
- {
- if (BattleConst.UnactiveHeroSortingOrder == heroSetedSortingOrder)
- {
- heroSetedSortingOrder = effectConfig.frontBack == 1 ? BattleConst.UnactiveHeroFrontSortingOrder : BattleConst.UnactiveHeroBackSortingOrder;
- }
- else
- {
- heroSetedSortingOrder = effectConfig.frontBack == 1 ? BattleConst.ActiveHeroFrontSortingOrder : BattleConst.ActiveHeroBackSortingOrder;
- }
-
- blocker.SetSortingOrder(heroSetedSortingOrder);
- }
+ ApplySortingOrder();
spineComp.enabled = true;
spineComp.timeScale = speedRate;
- spineAnimationState.TimeScale = speedRate;
Spine.Animation animation = spineAnimationState.Data.SkeletonData.Animations.First();
spineAnimationState.SetAnimation(0, animation, effectConfig.isLoop != 0);
@@ -496,11 +560,6 @@
spineComp.timeScale = 0f;
}
- if (spineAnimationState != null)
- {
- spineAnimationState.TimeScale = 0f;
- }
-
// Animator鍔ㄧ敾
foreach (var animator in animatorList)
{
@@ -521,11 +580,6 @@
if (spineComp != null)
{
spineComp.timeScale = speedRate;
- }
-
- if (spineAnimationState != null)
- {
- spineAnimationState.TimeScale = speedRate;
}
// Animator鍔ㄧ敾
@@ -589,4 +643,31 @@
animator.speed = speedRate;
}
}
+
+ public void BindBone(SkeletonAnimation skeletonAnim, string v)
+ {
+ Bone bone = skeletonAnim.skeleton.FindBone(v);
+
+ if (null == bone)
+ {
+ return;
+ }
+
+ isBindBone = true;
+ followedBone = bone;
+
+ BoneFollower boneFollower = gameObject.AddMissingComponent<BoneFollower>();
+ boneFollower.boneName = v;
+ boneFollower.skeletonRenderer = skeletonAnim;
+
+ boneFollower.followBoneRotation = false;
+ boneFollower.followXYPosition = true;
+ boneFollower.followZPosition = false;
+ boneFollower.followLocalScale = false;
+ boneFollower.followParentWorldScale = false;
+ boneFollower.followSkeletonFlip = false;
+
+ boneFollower.Initialize();
+ boneFollower.LateUpdate();
+ }
}
--
Gitblit v1.8.0