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