From 8581fb56f1bc0ad0c396a9f689be14e94e6ca00b Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期日, 28 九月 2025 19:57:19 +0800
Subject: [PATCH] 125 战斗 1.战斗层级无效问题 2.连击不回原位就直接开打的问题 3.特效延迟销毁问题 4.部分技能使用之后会卡死的问题

---
 Main/System/Battle/Motion/MotionBase.cs |   36 +++++++++++++++++++++---------------
 1 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/Main/System/Battle/Motion/MotionBase.cs b/Main/System/Battle/Motion/MotionBase.cs
index 5e652f0..6a5d57f 100644
--- a/Main/System/Battle/Motion/MotionBase.cs
+++ b/Main/System/Battle/Motion/MotionBase.cs
@@ -111,6 +111,11 @@
     /// <returns>鍔ㄧ敾杞ㄩ亾鏉$洰</returns>
     public virtual Spine.TrackEntry PlayAnimation(MotionName motionName, bool loop, Action _onComplete = null)
     {
+        if (isPlaySkillAnimation)
+        {
+            return null;
+        }
+
         if (spineAnimationState == null) return null;
 
         // 濡傛灉褰撳墠鍔ㄧ敾鏈畬鎴�
@@ -147,17 +152,19 @@
         runActionList.Remove(_action);
     }
 
+    private bool isPlaySkillAnimation = false;
+
     public Spine.TrackEntry PlaySkillAnimation(SkillConfig skillConfig, SkillBase skillBase, Action _onComplete = null)
     {
         // 鍙傛暟鏍¢獙
         if (skillConfig == null)
         {
-            BattleDebug.LogError("鎶�鑳介厤缃负绌猴紝鏃犳硶鎾斁鎶�鑳藉姩鐢�");
+            Debug.LogError("鎶�鑳介厤缃负绌猴紝鏃犳硶鎾斁鎶�鑳藉姩鐢�");
             return null;
         }
         if (spineAnimationState == null || skeleton == null)
         {
-            BattleDebug.LogError("SkeletonGraphic鎴朅nimationState鏈垵濮嬪寲锛屾棤娉曟挱鏀炬妧鑳藉姩鐢�");
+            Debug.LogError("SkeletonGraphic鎴朅nimationState鏈垵濮嬪寲锛屾棤娉曟挱鏀炬妧鑳藉姩鐢�");
             return null;
         }
 
@@ -181,7 +188,7 @@
         // 鑾峰彇鍔ㄧ敾
         if (anim == null)
         {
-            BattleDebug.LogError($"鎵句笉鍒板姩鐢�: {skillConfig.SkillMotionName}");
+            Debug.LogError($"鎵句笉鍒板姩鐢�: {skillConfig.SkillMotionName}");
             _onComplete?.Invoke();
             return null;
         }
@@ -194,11 +201,11 @@
 
         // 鎾斁鍔ㄧ敾
         var skillTrackEntry = spineAnimationState.SetAnimation(0, anim, false);
+        isPlaySkillAnimation = true;
         currentTrackEntry = skillTrackEntry;
 
         // 浜嬩欢鐘舵��
         int curLoop = 0;
-        bool isFinish = false;
         bool beginPhaseTriggered = false;
         bool finalFrameStarted = false;
         bool finalFrameEnded = false;
@@ -216,21 +223,24 @@
 
         updateLocalHandler = () =>
         {
-            if (isFinish) return;
-
             float frame = (skillTrackEntry.TrackTime * skillTrackEntry.TimeScale * (float)BattleConst.skillMotionFps);
+
+            if (currentTrackEntry != skillTrackEntry)
+            {
+                Debug.LogError("鎶�鑳藉姩鐢昏鎵撴柇锛屽己鍒剁粨鏉� " + skillConfig.SkillID + " last animation : " + (currentTrackEntry != null && currentTrackEntry.Animation != null ? currentTrackEntry.Animation.Name : "null"));
+            }
 
             if (skillTrackEntry.TrackTime == 0)
             {
                 failCallbackTimes++;
             }
-            
+
             if (failCallbackTimes > 100)
             {
                 Debug.LogError("鎶�鑳藉姩鐢绘挱鏀惧け璐ワ紝鍥炶皟寮傚父锛屽己鍒剁粨鏉� " + skillConfig.SkillID + " 瀵艰嚧閿欒鐨勫師鍥犳槸鎶�鑳藉抚閰嶇疆寰楀お涔呭鑷存妧鑳藉姩浣滅粨鏉熶簡浜嬩欢杩樻病缁撴潫");
                 skillBase.ForceFinished();
                 RemoveRunAction(updateLocalHandler);
-                isFinish = true;
+                isPlaySkillAnimation = true;
                 return;
             }
 
@@ -302,17 +312,13 @@
                 if (finalFrameStarted && !finalFrameEnded && frame >= recoveryFrame)
                 {
                     finalFrameEnded = true;
-                    skillBase.OnFinalFrameEnd();
+                    isPlaySkillAnimation = false;
                     RemoveRunAction(updateLocalHandler);
-                    isFinish = true;
+                    _onComplete?.Invoke();
+                    skillBase.OnFinalFrameEnd();
                 }
             }
         };
-
-        if (_onComplete != null && currentTrackEntry != null)
-        {
-            trackEntryCompleteDict[currentTrackEntry] = _onComplete;
-        }
 
         RunAction(updateLocalHandler);
 

--
Gitblit v1.8.0