セパレートした際、Slotが分割されているのにも関わらず、Meshが正しく別れておらず困っています。
Skeleton Render Separatorのインスペクタ情報は間違っていないと思うのですが、
アニメーションを切り替えると、セパレートしたMeshが何故かインスペクタ上から無くなる事があるので、表示が上手くいきません。
いい方法があれば教えて頂きたいです。
やりたいこと
1体のキャラクターをSpineとして作成しています。
このSpineは前向き絵と後ろ向き状態の絵がそれぞれあるので、
SpineをUnityランタイムで生成した時に前向き絵の左腕、体、後ろ向き絵の右腕の3つにセパレートしています。
なので、キャラクターが前向きの際は体と左腕が分割されている状態、キャラクターが後ろ向きの際は体と右腕が分割されている状態にしたいです。
やってみたこと
前向き絵の左腕のSlot名を「SE_l_arm_front」
後ろ向き絵の右腕のSlot名を「SE_r_arm_back」
としました。
SlotリストをSlotの頭文字で分割する「skeletonAnimation.FindAndApplySeparatorSlots関数」を使いたかったため、頭文字に「SE」を付けています。
以下のspine-unity Runtime Documentationを参考にセパレートしました。
http://ja.esotericsoftware.com/spine-unity#SkeletonRenderSeparator
この状態で前向きのアニメーションを再生すると正しく「SE_l_arm_front」が分割されているのが確認できましたが、
後ろ向きアニメーションを再生すると「SE_r_arm_back」が分割されていませんでした。
以下、インスペクタ等、現在の情報です。
セパレートされたSlot
SE_l_arm_front
セパレートされなかったSlot
SE_r_arm_back
Slot内容
SkeletonRenderSeparatorのインスペクタ
前向きでのPartsRenderersの内容
0
1
2
後ろ向きでのPartsRenderersの内容
0
1
2
セパレートをスクリプト上で行うためのスクリプト
※ startsWithSlotName = "SE"
private void EnableSeparator(string startsWithSlotName)
{
// separatorSlotを予め初期化
skeletonAnimation.separatorSlots.Clear();
// 特定の文字列で始まるSlotを分割する
skeletonAnimation.FindAndApplySeparatorSlots(startsWithSlotName, false, true);
// SkeletonRenderSeparatorを初期化する
SkeletonRenderSeparator skeletonRenderSeparator = SkeletonRenderSeparator.AddToSkeletonRenderer(skeletonAnimation);
// Separatorを有効にする
skeletonRenderSeparator.enabled = true;
}
後ろ向きのアニメーションを再生した際、セパレータオブジェクト「2」のMeshがNoneになる点が気になります。
ご教授お願いいたします。