この記事でのバージョン
Unity 2019.4.26f1
spine-unity 3.8
はじめに
今回はSpineで作ったスキンやアタッチメントをUnityで切り替えて、
キャラクターの見た目を変える方法の紹介記事です!
![]() |
なお、SpineをUnityで使えるようにする導入方法については以下の記事を参照の事。
ちなみに記事中では使っている画像やアニメーションは、
上記の記事でも紹介したサンプルを使用しています。
スキンを変える方法
まずキャラクター全体の見た目を設定するスキンを変える方法ですが、
スキンはスケルトンのボーンとアニメーションを他のアタッチメントセットへの再利用を可能にします。これにより同様のボーンとアニメーションを有する複数キャラクター作成作業が大幅に軽減されます。
Skeleton AnimationのInitial Skinから簡単に変える事が出来ます。
![]() |
また、プログラムで変更したい場合はSetSkinとSetSlotsToSetupPoseというメソッドを使います。
//スキンをgoblingirlに変更 _skeletonAnimation.Skeleton.SetSkin("goblingirl"); _skeletonAnimation.Skeleton.SetSlotsToSetupPose();
![]() |
なお、SpineSkinという属性を使う事でスキン名をプルダウンで選べるようになります。
ただし、SkeletonAnimationと同じオブジェクトにAddしている必要があります。
//Inspector上でスキン名をプルダウンで選ぶ変数 [SerializeField, SpineSkin] private string _skinName = default;
![]() |
アタッチメント
次にキャラクターの持ち物など一部分だけを設定するアタッチメントを変える方法ですが、
Spineのアタッチメントはスロットを通してボーンにアタッチします。ボーンがトランスフォームされる時、アタッチメントもトランスフォームされます。アタッチメントの中にはイメージのように表示されるものもあれば、境界ボックスのように概念のものもあります。
以下のようにプログラムからSetAttachmentを使って変更します。
//left-hand-itemというスロットに付いているアタッチメントをspearにする _skeletonAnimation.Skeleton.SetAttachment("left-hand-item", "spear"); //アタッチメントにnullを設定するとなくす事も可能 _skeletonAnimation.Skeleton.SetAttachment("left-hand-item", null);
![]() |
ちなみにどんなスロットやアタッチメントが設定されているかは、
スケルトンデータから確認する事が可能です。
![]() |