PhysifApps

趣味と開発メモ保管庫

スクリプトからSpineのアニメーションやスキンの操作をする【Unity】【Spine】

たまたまSpineちょっと触ったので使い方の個人的なメモを書いときます。誰かの役に立てば幸いです。

ja.esotericsoftware.com

アニメーションを再生する

SkeletonAnimation.AnimationState.SetAnimation(int trackIndex, Animation animation, bool loop)

でアニメーションを再生する。実際に書くとこんな感じ。

SkeletonAnimation skeletonAnim;

// アニメーションを再生
skeletonAnim.AnimationState.SetAnimation( 0, "HogeAnim", true );

スキンを変更する

スキンの変更はこんな感じに書く。引数はSkinを直接渡すかstringでスキン名を指定するかの2通り。

skeletonAnim.skeleton.SetSkin("HogeSkin");
skeletonAnim.skeleton.SetSlotsToSetupPose();

地味につまづいたのがここで、 SetSkin() した後は SetSlotsToSetupPose() しないとスキンの変更が反映されない。

スキンをリスト、配列で取得する

スキンを動的に変更する時にリストか配列から呼び出して変更したい時、スキンのリストを取得するのにこのように書いた。もっといい書き方はある気はする。

// スキンをListで取得
List< Skins > skinList = skeletonAnim.skeletonDataAsset.GetSkeletonData( false ).Skins;
// スキンを配列で取得
Skins[ ] skinArray = skeletonAnim.skeletonDataAsset.GetSkeletonData( false ).Skins.ToArray( );

GetSkeletonData(bool quiet)の引数は、意味そのままでfalseにすると、skeletonJSONがnullの時にエラーを出してくれる。

取得したスキンのリストから名前を取得する

Skin.Nameからstringで取得できる。

Debug.Log( skinList[0].Name );