Spine で作ったアニメーションを Unity で動かすには、公式のランタイム spine-unity を入れます。
- spine-unity の版は、書き出したエディタの版(4.3 など)と合わせる
- 入れ方は unitypackage か、Package Manager の git URL
- 書き出すファイルは .json か .skel.bytes、.atlas.txt、.png
- Assets に入れると SkeletonData が自動で作られ、シーンにドラッグして SkeletonAnimation を選ぶ
2026年10月3日、現行の公式ガイドとspine-runtimes 4.3のソースを照合しました。
Unity・Spineエディタでの操作再現は含まず、画面の英語名と版ごとの差を分けて説明します。
Unity と Spine のエディタでの再現は含まず、画面の名前は英語版の表記です。
spine-unityとUnityの対応
| spine-unity | 対応する Unity |
|---|---|
| 4.3 | 2017.1〜6000.4 |
| 4.2 | 2017.1〜6000.3 |
| 4.1 | 2017.1〜2023.1 |
| 4.0 | 2017.1〜2022.1 |
spine-unity の版は、データを書き出した Spine エディタの版の最初の2つの数字と合わせます。
4.3 のエディタで書き出したなら、spine-unity も 4.3 を使います。
入れ方
unitypackageで入れる
公式のダウンロードページから unitypackage を入手し、ダブルクリックするか、Unity の Project ウィンドウにドラッグします。
Package Managerで入れる
Package Manager の「+」→「Add package from git URL…」で、次の3つを順に追加します。
https://github.com/EsotericSoftware/spine-runtimes.git?path=spine-csharp/src#4.3
https://github.com/EsotericSoftware/spine-runtimes.git?path=spine-unity/Assets/Spine#4.3
https://github.com/EsotericSoftware/spine-runtimes.git?path=spine-unity/Assets/Spine Examples#4.3Git URL での追加のしかたは、UnityのPackage Managerでパッケージを追加する方法で紹介しています。
URPで使うとき
URP のプロジェクトでは、URP 用のシェーダーのパッケージも入れます。
https://github.com/EsotericSoftware/spine-runtimes.git?path=spine-unity/Modules/com.esotericsoftware.spine.urp-shaders#4.3標準の Spine/Skeleton シェーダーは URP では使えず、URP では Universal Render Pipeline/Spine/Skeleton などを使います。
版を上げるとき
最初の2つの数字が変わる更新では、元プロジェクトを残し、導入方法別の公式更新手順を複製で検証します。
Spineから書き出す
| ファイル | 拡張子 |
|---|---|
| スケルトンのデータ | .json か .skel.bytes |
| アトラス | .atlas.txt |
| 画像 | .png |
spine-unity は拡張子 .skel を読めないので、バイナリで書き出すときは .skel.bytes にします。
アトラスは、書き出しの画面の「Pack Settings」で、「Atlas extension」を .atlas.txt にします。
書き出しの設定は、Spineの書き出し(JSON・バイナリ・アトラス)で紹介しています。
透明の扱い(アルファ)
| 方法 | Spine 側 | マテリアル | 向いている色空間 |
|---|---|---|---|
| ストレートアルファ | Premultiply alpha をオフ・Bleed をオン | Straight Alpha Texture をオン | LinearまたはGamma |
| 乗算済みアルファ(PMA) | Premultiply alpha をオン | Straight Alpha Texture をオフ | Gamma だけ |
Unityに読み込んで表示する
- 書き出したファイル(またはフォルダーごと)を Unity の Assets にドラッグする
- _Atlas・_Material・_SkeletonData の3つが自動で作られる
- _SkeletonData を Scene ビューか Hierarchy にドラッグし、「SkeletonAnimation」を選ぶ
- インスペクターの「Animation Name」で、最初に再生するアニメーションを選ぶ
インスペクターには、ほかに「Loop」「Time Scale」「Initial Skin」があります。
UI(Canvas)の中に置くときは SkeletonGraphic、Mecanim で動かすときは SkeletonMecanim を使います。
参照と名前を確認して再生する
using Spine.Unity;
using UnityEngine;
// spine-unity 4.3: SkeletonAnimation と同じ GameObject に描画コンポーネントを配置。
public class PlayWalk : MonoBehaviour
{
public SkeletonAnimation skeletonAnimation;
public string firstAnimation = "walk";
public string nextAnimation = "run";
public float nextDelay = 2f;
void Start() { TryPlay(); }
public bool TryPlay()
{
if (skeletonAnimation == null || skeletonAnimation.Renderer == null ||
skeletonAnimation.SkeletonDataAsset == null)
{
Debug.LogError("SkeletonAnimation・描画コンポーネント・Skeleton Data Assetを確認してください。", this);
return false;
}
if (string.IsNullOrEmpty(firstAnimation) || string.IsNullOrEmpty(nextAnimation) ||
float.IsNaN(nextDelay) || float.IsInfinity(nextDelay) || nextDelay <= 0f)
{
Debug.LogError("アニメーション名と、0より大きい有限の待ち時間を指定してください。", this);
return false;
}
skeletonAnimation.Initialize(false);
var skeleton = skeletonAnimation.Skeleton;
var state = skeletonAnimation.AnimationState;
if (skeleton == null || state == null)
{
Debug.LogError("スケルトンを初期化できません。Consoleと書き出しデータを確認してください。", this);
return false;
}
var first = skeleton.Data.FindAnimation(firstAnimation);
var next = skeleton.Data.FindAnimation(nextAnimation);
if (first == null || next == null)
{
Debug.LogError("指定したアニメーションがデータにありません。大文字・小文字も確認してください。", this);
return false;
}
state.SetAnimation(0, first, true);
state.AddAnimation(0, next, true, nextDelay);
return true;
}
}
SetAnimation と AddAnimation の書き方は、公式ドキュメントの例にもとづいています。
4.3での変更
spine-unity 4.3 では、SkeletonAnimation が SkeletonAnimation と SkeletonRenderer の2つのコンポーネントに分かれました。
前の版で作ったシーンやプレハブは、開いたときに自動で更新されると、変更履歴に書かれています。
更新前にプロジェクトを残す
導入方法はunitypackageかUPMのどちらかにそろえます。
URPシェーダーをGit URLから追加する場合は、spine-csharpとspine-unity本体もUPMで入っていることが条件です。
Assetsへunitypackageで入れた本体と混ぜると、シェーダーの参照先が一致しません。
公式Installationで現在の導入方法と更新手順を確認し、元のプロジェクトを複製した検証用プロジェクトで試します。
シーン・プレハブ・マテリアルと、Packages/manifest.json・packages-lock.jsonをまとめて残します。
旧Assets/Spineフォルダーをその場で削除する一律の手順は使いません。
自作ファイルや参照を確認し、更新方法ごとに公式手順を選びます。
検証でコンパイル・表示・再生がそろわなければ元のプロジェクトへ戻します。
再生コードの入力・結果・切り分け
PlayWalk.csを練習用GameObjectへ追加し、Skeleton Animation欄に同じスケルトンのSkeletonAnimationを指定します。
4.3では描画コンポーネントも必要です。
First AnimationとNext Animationには、書き出しデータに存在する名前を大文字・小文字も一致させて入力します。
walkとrunは例の名前で、全データにある名前ではありません。
Play開始後に最初のアニメーションがトラック0で再生され、Next Delayを過ぎた時点で次のアニメーションに切り替わることを確認します。
正のDelayは前のトラックの再生時間を基準にするため、Time Scaleや一時停止によって実時間との差が生じます。
| 入力・症状 | 期待する確認結果 | 次の操作 |
|---|---|---|
| 未指定・データ不足 | Consoleの参照/初期化エラー | Skeleton Data Assetと描画コンポーネントを確認 |
| 名前がない | 処理を止め、トラックを変更しない | データ内の名前・Export設定を確認 |
| 切替時刻が違う | トラックの時間と実時間を比較 | Time Scale、待ち時間、別スクリプトを確認 |
確認後はPlayを停止し、練習用スクリプトを無効化します。
元シーンのInspector設定は変更せず、更新用の複製を本番の代わりに上書きしません。
練習ファイルと確認済みの範囲
2本のC#例は参照・名前・待ち時間の異常系をローカルのテストダブルで検査し、4.3のAPI宣言を一次資料で照合しました。
実際のSpine/Unityコンパイル・描画・スキン・書き出し・変形は未検証です。
コードは4.3用です。
練習の完了は、それぞれ本文の表示・再生・復元を実環境で確認して判断します。
まとめ
- spine-unity の版はエディタの版に合わせる。4.3 は Unity 2017.1〜6000.4
- unitypackage か、git URL で3つのパッケージを入れる。URP はシェーダーのパッケージも
- 書き出しは .skel.bytes と .atlas.txt
- _SkeletonData をシーンにドラッグして SkeletonAnimation を選ぶ
参考:Esoteric Software「spine-unity Download」「Installation」「Assets」「Main Components」「Rendering」、spine-runtimes 4.3 CHANGELOG(2026年9月29日に確認)。
