Yo Abelius :yes:
If a track is empty (not playing an animation) and you use SetAnimation or AddAnimation, it will instantly snap to the first frame of the animation.
To have it mix in, use SetEmptyAnimation (or AddEmptyAnimation) first, and then apply your actual animation.
You're correct that the Preview window in Spine seems to always smoothly mix in, and so it can look differently then in Unity.
Note: I use SkeletonAnimation for everything and not SkeletonMecanim, so the following info only pertains to SkeletonAnimation.
What I do when I want to apply an animation on a higher track, but I want it to mix in smoothly regardless of whether or not there is already an animation playing on that track is to check if that track already has an animation playing on it - if so, I use SetAnimation, if not I use AddAnimation:
<Old code removed, see below>
I wrote that code a while back, so there might be an easier way to check if the Track is empty.
Edit: Looks like a better way to check if a track is empty is: skeletonAnimation.AnimationState.GetCurrent(trackIndex). Note that it can return Null.
Also another thing to look out for - if you play an animation on the higher track and just let it finish, it will remain "freeze framed" on the final frame of the animation. So if you want to do something like lets say... the player is running and then they wave their hand. The lower track is playing the running animation loop. Then you Add (or Set) the Wave animation on the higher track and at the same time queue up an Empty Animation to play immediately after the Wave animation by doing skeletonAnimation.AnimationState.AddEmptyAnimation(). That way as soon as the Wave animation completes, the EmptyAnimation will begin and it will mix out the Wave animation into an empty track.
If you've got any follow up questions lemme know! (won't be able to answer until tomorrow though)