| Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/Battle/BattleObject/BattleObject.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/Battle/Motion/MotionBase.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
@@ -2,6 +2,8 @@ using System.Collections.Generic; using Cysharp.Threading.Tasks; // 如果这个Action卡住了 大概率是因为 动作被其他动作中断了 导致没有回调 public class DeathRecordAction : RecordAction { protected List<HB422_tagMCTurnFightObjDead> deadPackList = new List<HB422_tagMCTurnFightObjDead>(); @@ -62,8 +64,6 @@ { isFinish = true; } return; } } Main/System/Battle/BattleObject/BattleObject.cs
@@ -405,7 +405,7 @@ public virtual void OnDeath(Action _onDeathAnimationComplete) { buffMgr.RemoveAllBuff(); motionBase.PlayAnimation(MotionName.dead, false, () => motionBase.PlayDeadAnimation(() => { teamHero.isDead = true; OnDeadAnimationComplete(); Main/System/Battle/Motion/MotionBase.cs
@@ -105,6 +105,41 @@ return currentTrack; } public virtual Spine.TrackEntry PlayDeadAnimation(Action onComplete = null) { if (animState == null) return null; // 使用轨道9作为死亡动画专用轨道(独立于主轨道0和子技能轨道1-8) const int deathTrackIndex = 9; // 清除死亡轨道上的回调 if (activeSkillTracks.TryGetValue(deathTrackIndex, out var oldDeathTrack)) { if (trackEntryCallbacks.ContainsKey(oldDeathTrack)) trackEntryCallbacks.Remove(oldDeathTrack); } Spine.Animation deadAnim = FindAnim(MotionName.dead.ToString()); if (deadAnim == null) { Debug.LogError("找不到死亡动画"); onComplete?.Invoke(); return null; } Spine.TrackEntry deathTrack = animState.SetAnimation(deathTrackIndex, deadAnim, false); if (deathTrack != null) { activeSkillTracks[deathTrackIndex] = deathTrack; if (onComplete != null) trackEntryCallbacks[deathTrack] = onComplete; } return deathTrack; } private void AddAction(Action action) => runningActions.Add(action); private void RemoveAction(Action action) => runningActions.Remove(action);