Similar problem: A little Unity help requested
Many other people had the same problem.
Basic solution is to have it auto-reset every start of a new animation by doing this:
void Start () {
var skeletonAnimation = GetComponent<SkeletonAnimation>();
var skeleton = skeletonAnimation.skeleton;
skeletonAnimation.state.Start += delegate { skeleton.SetToSetupPose(); };
}
The short story is: Spine runtimes don't auto-reset because it doesn't assume that you want that behavior (even if that's the way it looks in Spine editor). Other types of games/animation workflows require that it doesn't auto-reset.
The long story (and kinda technical for the average newbie Unity user) is here: http://esotericsoftware.com/spine-using-runtimes#Animation-changes
Personally, I would argue that the non-auto-resetting behavior is advanced use and should be the opt-in case and not this one, even if special auto-reset behavior is a case-by-case implementation. But, oh well.
If the syntax above doesn't make sense to you, look up C# delegates and events, anonymous methods and closures. And make sure you're reading on the C# 3.0 spec.
If you want to know more about .Start
and other built-in Spine animation callbacks, read the code of Spine.AnimationState.