using UnityEngine; using Spine.Unity; public class SpineMovePlayer { public SkeletonAnimation skeleton; public string idleName = "idle"; private static readonly string[] MoveNames = { "move", "walk", "run", "Move", "Walk", "Run", "MOVE", "WALK", "RUN" }; private string cachedMoveAnim = null; public void Init() { cachedMoveAnim = FindMoveAnimation(skeleton); } private string FindMoveAnimation(SkeletonAnimation sk) { var anims = sk.Skeleton.Data.Animations; foreach (var name in MoveNames) { foreach (var a in anims) { if (a.Name == name) return a.Name; } } return null; } public string PlayMove() { if (!string.IsNullOrEmpty(cachedMoveAnim)) { skeleton.AnimationState.SetAnimation(0, cachedMoveAnim, true); return cachedMoveAnim; } else { skeleton.AnimationState.SetAnimation(0, idleName, true); return idleName; } } public void PlayIdle() { skeleton.AnimationState.SetAnimation(0, idleName, true); } }