diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonAnimation.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonAnimation.cs index fc28097e2..902155985 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonAnimation.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonAnimation.cs @@ -191,6 +191,7 @@ namespace Spine.Unity { if (!valid) return; state = new Spine.AnimationState(skeletonDataAsset.GetAnimationStateData()); + state.Dispose += OnAnimationDisposed; wasUpdatedAfterInit = false; if (!string.IsNullOrEmpty(_animationName)) { @@ -302,6 +303,14 @@ namespace Spine.Unity { if (previousUpdateMode != UpdateMode.FullUpdate) LateUpdate(); } + + protected virtual void OnAnimationDisposed (TrackEntry entry) { + // when updateMode disables applying animations, still ensure animations are mixed out + if (updateMode != UpdateMode.FullUpdate && + updateMode != UpdateMode.EverythingExceptMesh) { + entry.Animation.Apply(skeleton, 0, 0, false, null, 0f, MixBlend.Setup, MixDirection.Out); + } + } } }