
1. 什麼是Spine?
Spine 是一個非常強大的動畫製作工具
你可以使用它來進行骨骼綁定, 動畫混合, 製作位移和關鍵幀等等
製作好動畫之後, 可以很方便的導出到其他遊戲引擎之中直接使用
Spine官网: 专注于游戏的2D动画软件
Spine是一款专门为软件和游戏开发设计,量身打造的2D动画软件。动画师,原画师和程序共同为您的游戏赋予生命。

2. 如何匯出製作好的動畫
在 Spine 製作好動畫之後
接著可以匯出到其他的遊戲引擎進行使用
Spine 提供多種匯出的格式
包含 Json, Binary, Gif, Png, 或 Video
如果匯出 Gif 格式的話
可以使用 UniGif 或 mgGif 等開源代碼在 Unity中播放
一般我們可以選擇匯出 Json 或者 Binary 的格式
實際生產環境中建議使用 Binary 的格式
因為它的檔案尺寸更小且載入速度更快
- 點擊
Spine Menu
>Export...
選擇 Json

- 勾選 Texture atlas, 然後點開 Pack Settings

- 把 Atlas extension 改成 .atlas txt

- 接著設定好輸出的目錄就可以 Export 了

順利的話你會得到下面三個文件:

如果是輸出 Binary 的話, 就把 Extension
設置为 .skel.bytes
.

3. 在 Unity 中使用 Spine 動畫
要在 Unity 中使用 Spine 製作好的動畫
第一步: 下載 spine-unity unitypackage
spine-unity 下载

確保你的 Unity 已經安裝好了 Spine Unity Package
更多詳細的安裝方式可以參考這裡
第二步: 把那三個文件直接拖到 Unity 中
第一步順利安裝成功的話
你會看到 Unity 會自動生成額外的3個系統文件

接著把這個新生成的 Skeleton_Data 拖到場景點擊播放
你就會看到你的動畫了
0:00
/0:06
也可以在這裡修改默認的播放動畫

4. 如何使用代碼控制動畫的播放
這裡是一個簡單的控制動畫代碼
重點在於取得 skeletonAnimation 的 AnimationState 之後
呼叫 SetAnimation 這個函數
暫停的話則是呼叫 SetEmptyAnimation
public class SplineAnimationCtl : MonoBehaviour
{
[SpineAnimation] public string animationName;
SkeletonAnimation skeletonAnimation;
public Spine.AnimationState spineAnimationState;
void Start()
{
skeletonAnimation = GetComponent<SkeletonAnimation>();
spineAnimationState = skeletonAnimation.AnimationState;
}
public void PlayAnimation(string animName, bool loop)
{
spineAnimationState.SetAnimation(0, animName, loop);
}
public void StopAnimation()
{
spineAnimationState.SetEmptyAnimation(0, 0.5f);
}
}
把這個簡單的代碼掛在 Spine 的物件上

然後在場景上掛兩個按鈕呼叫測試

最終效果:
0:00
/0:06
Discussion