Explorar o código

[unity] Fixed animations not mixing out on some Update When Invisible modes, leaving e.g. leftover slots. Closes #2873.

Harald Csaszar hai 4 semanas
pai
achega
636d65d72a

+ 9 - 0
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);
+			}
+		}
 	}
 
 }