Amazonで商品を見るセール会場へ

SpineをUnityで動かす方法|導入と再生

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.32017.1〜6000.4
4.22017.1〜6000.3
4.12017.1〜2023.1
4.02017.1〜2022.1
Esoteric Software「spine-unity Download」(2026年9月29日に確認)

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.3

Git 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
Esoteric Software「spine-unity Assets」をもとに作成

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 だけ
Esoteric Software「spine-unity Assets」をもとに作成

Unityに読み込んで表示する

  1. 書き出したファイル(またはフォルダーごと)を Unity の Assets にドラッグする
  2. _Atlas・_Material・_SkeletonData の3つが自動で作られる
  3. _SkeletonData を Scene ビューか Hierarchy にドラッグし、「SkeletonAnimation」を選ぶ
  4. インスペクターの「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設定は変更せず、更新用の複製を本番の代わりに上書きしません。

練習ファイルと確認済みの範囲

Spine関連の練習入力とC#コードをダウンロード。

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日に確認)。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

3DCGのおすすめ書籍

3DCG用PCの選び方

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次