ライセンスについて
Spineランタイムをアプリケーションに組み込むにはSpineライセンスが必要です。
アセット
Unity用にSpineアセットをエクスポートする
エクスポートのユーザーガイド
以下の実行方法については、Spineユーザーガイド内で紹介されています :
初心者のためのSpineからUnityへのエクスポート
以下は、SpineのアセットをUnity用にエクスポートする簡単な方法です。
-
スケルトンとアニメーションを作成した後、
Spineメニュー
>Export...(エクスポート...)
(CTRL
+E
)をクリックします。すると、Export(エクスポート)ウィンドウが開きます。
-
Export(エクスポート)ウィンドウの左上にある
JSON
を選択してください。注意: バイナリスケルトンエクスポートの方がJSONエクスポートよりもサイズが小さくロードも早いので、製品段階ではJSONエクスポートではなくバイナリエクスポートを使用した方が良いでしょう。
-
Texture Atlas(テクスチャアトラス)
のチェックボックスPack(パック)
にチェックしてください。※初心者の方はNonessential data(非必須データ)
とPretty print(整形表示)
にチェックを入れておくことをお勧めします。また、Animation cleanup(アニメーションクリーンアップ)
が無効になっていることを確認してください。そうしないと、セットアップポーズと同じキーがエクスポートされなくなります。 a.Pack(パック)
チェックボックスの下のPack Settings(パック設定)
をクリックします。すると Texture Packer Settings(テクスチャ・パッカー設定) ウィンドウが開きます。
b. 右下のAtlas extension(アトラス拡張子)
というテキストボックス内で.atlas.txt
が設定されていることを確認してください。 c. これでTexture Packer Settings(テクスチャ・パッカー設定)ウィンドウでの操作は完了です。OK
をクリックして閉じてください。 -
Export(エクスポート)ウィンドウで出力フォルダを選択してください(新しく空のフォルダーを作成することを推奨します)
-
Export(エクスポート)
をクリックしてください。 -
すると以下の3種類のファイルが書き出されます:
skeleton-name.json
またはskeleton-name.skel.bytes
: これはスケルトンとアニメーションのデータを含んでいます。skeleton-name.atlas.txt
: これはテクスチャアトラスの情報を含んでいます。- 1つまたは複数の
.png
ファイル : これはテクスチャアトラスの各ページで、スケルトンが使用するイメージを含んでいます。
注意: 2D Toolkit ユーザーの場合、ステップ3(.pngと.atlas.txtのパッキング)は必要ありません。代わりにSkeletonDataAssetに適切なフィールドを用意して、
tk2dSpriteCollectionData
への参照を割り当てます。2D Toolkitのサポートを有効にする方法については、このページのインストール方法セクションを参照してください。
Unity向けのバイナリエクスポート
JSONではなくバイナリ形式でエクスポートすると、ファイルサイズが小さくなり、ロードが速くなります。
以下はspine-unityでバイナリ形式のエクスポートに変更する方法です。
- エクスポートウィンドウの左上で
JSON
の代わりにBinary(バイナリ)
を選択します。 Extension(拡張子)
で.skel.bytes
を設定します。
注意: spine-unityでは拡張子が
.skel
のファイルを読み込むことができません。拡張子は必ず.skel.bytes
を使用してください。
高度な情報 - エクスポートの自動化
プロジェクトの数が多い場合は、Spineのコマンドラインインターフェースを使用してスケルトンとアトラスのエクスポートを自動化することをお勧めします。これにより、反復的な手作業がなくなり、新しいSpineバージョンへアップグレードする際にも全てのプロジェクトを一度に簡単に再エクスポートできるようになります。
コマンドラインインターフェイスの活用例についてはこちらを参照してください。 例えば、当社ではSpineのサンプルプロジェクトを一括してエクスポートしてテクスチャアトラスを作成するために次のスクリプトを使用しています: export.sh
高度な情報 - 単一テクスチャアトラスのエクスポートとSkeletonGraphic
一般的には、サブメッシュの追加によるドローコールの数を減らすために、単一のテクスチャ(単一ページ)のアトラスを使用することをお勧めします。これは特にSkeletonGraphicに当てはまります。UnityのCanvasRenderer
の制限により、SkeletonGraphicの使用はデフォルトで単一テクスチャに制限されています。SkeletonGraphic
のInspectorで Advanced - Multiple CanvasRenderers
を有効にすると、サブメッシュごとに子 CanvasRenderer
GameObject
を生成してテクスチャの制限枚数を増やすことができますが、パフォーマンス上の理由により、可能な限り避けるべきです。よって、UIで使用されるスケルトンは、複数ページのアトラスではなく単一テクスチャ(単一ページ)のアトラスとしてパックされなければなりません。
1つのアトラスページに収まらない場合は、フォルダごとにまとめられたテクスチャアトラスページをパックすることができます。こうすることで、各スキンに必要なアトラスページを1つにすることができます。
画像をそれぞれのフォルダに配置したら、以下の手順でスケルトンをエクスポートします :
Ctrl+E
を押すか、ドロップダウンメニューでExport...(エクスポート...)
を選択します。Texture Atlas(テクスチャアトラス)
のPack(パック)
を有効にして、右にある設定をAttachments(アタッチメント)
からImage Folder(画像フォルダ)
に変更します。- (任意)
Pack Settings(パック設定)
の中で、右下のOptions(オプション)
にあるFlatten Paths(パス平坦化)
とCombine Subdirectories(サブディレクトリ結合)
が無効になっていることを確認してください(デフォルトでは無効です)。 - Export(エクスポート)をクリックします。
高度な情報 - 乗算済み vs ストレートアルファエクスポート
Spineでは、アトラステクスチャのエクスポート方法として、「Texture Packer Settings(テクスチャ・パッカー設定)」による2つの基本的なワークフローがあります :
- 乗算済みアルファ(デフォルト設定。ガンマ(Gamma)色空間で事前に乗算されます)
- ストレートアルファ
乗算済みアルファワークフローは、ストレートアルファに比べて加算ブレンドを使用するアタッチメントのための余分なドローコールが無いことや、より良いミップマップの生成などいくつかの利点があります。
エクスポートとインポートの設定を正しく一致させることが非常に重要です。Unityでの正しい設定については、高度な情報 - 乗算済み vs ストレートアルファインポートのセクションを参照してください。
SpineアセットのUnityへのインポート
- Unity Editorでご自身のUnityプロジェクトを開いてください。インストール方法セクションの説明に従って、プロジェクトにspine-unityランタイムが既に入っている状態にしておいてください。
- エクスポートされたファイル(
.json
、.atlas.txt
、.png
)のフォルダを開きます。 - エクスポートされたファイル(またはファイルを含むフォルダ)を、プロジェクトの
Assets
フォルダの任意のサブフォルダにコピーします。これを行うには、エクスポートされたファイルをエクスプローラーまたはFinderウィンドウからUnityのProjectパネルにある任意のフォルダにドラッグしてください。
spine-unityランタイムは、追加されたファイルを検出すると自動的に必要な追加Unityアセットを生成します。
以下のアセットが生成されます:
- _Atlasは、テクスチャアトラスファイル(
.atlas.txt
)用のアセットです。これは、マテリアルと.atlas.txt
ファイルへの参照を保持します。 - _Materialは、各テクスチャアトラスページ(
.png
)用のアセットです。これは、シェーダー.png
テクスチャへの参照を保持します。 - _SkeletonDataは、スケルトンデータファイル(
.json
、.skel.bytes
)用のアセットです。これは.json
または.skel.bytes
ファイルへの参照と、生成された _Atlas アセットを保持します。このアセットには、スケルトンのカスタムインポートおよびアニメーション設定も含まれます。詳しくはSkeleton Data Assetセクションを参照してください。
高度な情報 - 乗算済み vs ストレートアルファインポート
高度な情報 - 乗算済み vs ストレートアルファエクスポートで説明されている通り、Spineはアトラステクスチャをどのようにエクスポートするかについて2つの基本的なワークフローがあります :
- 乗算済みアルファ(デフォルト設定。ガンマ(Gamma)色空間で事前に乗算されます)
- ストレートアルファ
正しいインポート設定のためのPreferencesのパラメーターAtlas Texture Settings
重要な注意事項: アトラステクスチャのエクスポートでPremultiply alpha(乗算済みアルファ)
設定を使用する際の重要な注意事項として、Unity上でマテリアルの Straight Alpha Texture
パラメーターとテクスチャの Alpha Is Transparency
設定を両方とも無効にすることがとても重要です(その逆も同様です)。 spine-unityランタイムはUnityの Edit - Preferences
(MacではUnity - Preferences
)からアクセスできる Preferences
ウィンドウにSpine
セクションを追加します。このセクションの Atlas Texture Settings パラメーターの設定に従って、新しいアトラステクスチャがインポートされた際にテクスチャとマテリアルの設定が自動的に適用されます。そのすぐ下に、Additive Material
、Multiply Material
、Screen Material
のマテリアルテンプレートがあります。ストレートアルファワークフローに切り替える場合、これらのテンプレートマテリアル参照もそれに応じて調整する必要があります。
Spineから Premultiply alpha(乗算済みアルファ)
を有効(デフォルト)にしてアトラステクスチャをエクスポートしている場合は、Atlas Texture Settings
は PMATexturePreset
、ブレンドモードマテリアルもそれぞれ SkeletonPMAAdditive
、SkeletonPMAMultiply
、SkeletonPMAScreen
のままで問題ありません。 Premultiply alpha
を無効にしている場合は、Atlas Texture Settings
を StraightAlphaTexturePreset
に、そしてブレンドモードマテリアルもSkeletonStraightAdditive
、SkeletonStraightMultiply
、SkeletonStraightScreen
に設定してください。 または独自の TextureImporter
Preset
アセットやブレンドモードマテリアルを自作して割り当てることもできます。自作する場合は、使用するブレンドモードを反映させるために、PMA
または Straight
を含む名前を設定されることをお勧めします。
もし透明な領域の周りに黒い境界線が見えたり、アタッチメントの画像の周囲にカラフルなストライプが見えてしまう場合は、インポート設定が間違っている可能性があります。
テクスチャ・パッカーの正しいエクスポート設定およびテクスチャとマテリアルの正しいインポート設定
- 乗算済みアルファ(Premultiplied Alpha)の場合 テクスチャ・パッカー設定で
Premultiply alpha(乗算済みアルファ)
を有効
UnityのTexture設定でsRGB (Color Texture)
とAlpha Is Transparency
を無効
UnityのMaterialのパラメータStraight Alpha Texture
を無効に設定
注意:
sRGB (Color Texture)
は以前は有効にすることが推奨されていましたが、Generate Mip Maps
が有効になっている場合、この組み合わせだと白い継ぎ目が現れる可能性があります。このようなアーティファクトを避けるため、またガンマ(Gamma)空間では無くても問題ないため、PMA テクスチャではsRGB (Color Texture)
を無効にしておくことが推奨されるようになりました。
- ストレートアルファ(Straight Alpha)の場合 テクスチャ・パッカー設定で
Premultiply alpha(乗算済みアルファ)
を無効、Bleed(ブリード)
を有効
UnityのTexture設定でsRGB (Color Texture)
を有効、Alpha Is Transparency
を有効
UnityのMaterialのパラメータStraight Alpha Texture
を有効に設定
デフォルトのテクスチャ・パッカー設定はPremultiply alpha
を使用しています。spine-unityランタイムに付属している全てのSpineシェーダーは、デフォルトでPremultiply alpha
ワークフローを使用するように設定されており、デフォルトでStraight Alpha Texture
パラメータが無効になっています。
しかし、ストレートアルファワークフローを使用したい場合もありえます。そのようなケースとしては以下が考えられます:
- リニア(Linear)色空間を使用している場合。この場合は必ずストレートアルファ使用してください。
事前乗算はガンマ(Gamma)空間で行われるため、インポート時にリニア(Linear)空間に変換し直すと境界線が発生してしまいます。この組み合わせがマテリアルで検出されると、警告ログメッセージが出力されます。 - 付属のSpineシェーダー以外のシェーダーを使用したい場合。 一般的なシェーダーはストレートアルファテクスチャを想定していることが多いため、画像アタッチメントの周りに黒い境界線ができてしまうことがあります。
ストレートアルファワークフローに切り替える際には、上記のようにすべてのテクスチャとマテリアルを適切に設定してください。現在の色空間(カラースペース)は、Project Settings - Player - Other Settings - Color Space
で確認および変更することができます。
インポートのトラブルシューティング
スケルトンをUnityにインポートする際に何か問題が発生した場合、Spineのエクスポート設定が正しくない、Unityの設定が正しくないなど、様々な原因が考えられます。以下のビデオは、インポート時によくある問題に対する正しい対処法を理解するのに参考になるでしょう。
高度な情報 - Atlas ProviderとしてのUnityのSpriteAtlas
注意: 基本的には、Unityの
Sprite Atlas
アセットではなく通常のSpineのワークフローに従いSpineが作成したスプライトアトラスを使用することが推奨されます。Spineのアトラスは、効率の良いパッキングを行いますし、複数のアトラスページをサポートし、問題も発生しにくいです。そのため、UnityのSprite Atlas
アセットは、通常のSpineのワークフローが使えない場合にのみ、atlas providerとして使用するようにしてください。また、収集したスキンで使用されているテクスチャ領域を、実行時に単一のアトラステクスチャに再パックできることも考慮してください。
.atlas.txt
や .png
の代わりにUnityのSpriteAtlas
をatlas providerとして、スケルトンデータファイルと一緒に使用することができます。インポートは、Window - Spine - SpriteAtlas Import
からアクセスできる、特別な Spine SpriteAtlas Import
ツールウィンドウで行います。
Sprite Atlas
の準備手順:
Assets - Create - Sprite Atlas
でSprite Atlas
を作成します。Sprite Atlas
のInspectorのObjects for Packing
に、アタッチメントとして使用するSpriteの入ったフォルダを追加します。- (a) 2018.2以前のUnityバージョンでは、手動で
Tight Packing
を無効にし、Read/Write Enabled
を有効にしてください。 (b) 2018.2以降のUnityバージョンでは、これらの設定は自動的に調整されます。 - 新しい
Spine SpriteAtlas Import
ウィンドウのSprite Atlas
プロパティにSprite Atlas
を割り当ててください。すると追加のアセットが自動的に生成されます。 Load regions by entering Play mode
を押すと、短時間だけ再生モードに切り替わり、また戻ってきて領域情報をロードします。これでSprite Atlas
がSpineアトラスとして使用できるようになります。
.json
または .skel.bytes
スケルトンアセットでアトラスを使用する場合 :
.json
または.skel.bytes
ファイルを、新しく作成したアトラスアセットと同じディレクトリに配置します。- 配置したファイルを
Spine SpriteAtlas Import
ウィンドウのSkeleton json/skel file
プロパティに割り当ててください。 Import Skeleton
を押してSprite Atlas
アセットを使った_SkeletonData
ファイルを生成します。
Spine Preferences
spine-unityランタイムはUnityの Edit - Preferences
(MacではUnity - Preferences
)からアクセスできる Preferences
ウィンドウに Spine
セクションを追加します。ここでは、スケルトンのインポートやインスタンス化の際に使用されるデフォルト値を設定したり、spine-unityのアピアランスや更新動作をカスタマイズすることができます。
- Show Hierarchy Icons : Spineコンポーネントがアタッチされている場合に、Hierarchyパネルで
GameObjects
の横に関連するアイコンを表示するかどうかを設定します。 - Auto-reload scene components : シーン内のスケルトンコンポーネントのSkeletonDataAssetに変更が加わるたびに、そのコンポーネントを再ロードします。シーンに多数のSkeletonRendererまたはSkeletonGraphicコンポーネントがある場合、この処理に時間がかかることがあります。
- Reload SkeletonData after Play: 有効にすると、アクティブなシーン内のすべてのスケルトンが共有している SkeletonData は、プレイモードを終了した後に(.json または .skel.bytes ファイルから)リロードされます。これにより、望ましくない遅延が発生する可能性がありますが、プレイモード中に共有 SkeletonData に (偶発的な) 変更が加えられても、その影響がその後のプレイに持ち越されるのを防ぐことができます。
- Auto-Import Settings
- Default Mix : 新しくインポートされたSkeletonDataAssetsのDefault Mix Durationの値を設定します。
- Default SkeletonData Scale : 新しくインポートされたSkeletonDataAssetsのデフォルトの
Scale
値を設定します。 - Default Shader : 新しくインポートされたスケルトンのアトラステクスチャのために作成されたマテリアルに割り当てられるデフォルトのシェーダーを設定します
- Apply Atlas Texture Settings : 後述のTextureImporterでリファレンスの
Atlas Texture Settings
設定を適用するかどうかを設定します。 - Atlas Texture Settings : ここで選択したテクスチャインポート設定を、新しくインポートされたアトラステクスチャとマテリアルに適用します。Spineから
Premultiply alpha(乗算済みアルファ)
を有効(デフォルト)にしてアトラステクスチャをエクスポートしている場合、PMATexturePreset
のままで問題ありません。もしPremultiply alpha(乗算済みアルファ)
を無効にしているのであれば、StraightAlphaTexturePreset
を設定してください。または、独自のTextureImporter
Preset
アセットを自作して、ここに割り当てることもできます。 - Additive Material : スロットのブレンドモードが
Additive(加算)
のマテリアルのテンプレートを設定します。詳しくはSkeletonData
のBlend Mode Materialsを参照してください。 - Multiply Material : スロットのブレンドモードが
Multiply(乗算)
のマテリアルのテンプレートを設定します。詳しくはSkeletonData
のBlend Mode Materialsを参照してください。 - Screen Material : スロットのブレンドモードが
Screen(スクリーン)
のマテリアルのテンプレートを設定します。詳しくはSkeletonData
のBlend Mode Materialsを参照してください。
- Warnings
- Atlas Extension Warning :
.atlas
ファイルが見つかったときに、警告と勧告をログに出力します。 - Texture Settings Warning : テクスチャのインポート設定で、白い境界線が出るアーティファクト(画像の乱れ)など、望ましくない効果をもたらす可能性があるものが検出された場合、警告と勧告をログに出力します。
- Component & Material Warning : コンポーネントとマテリアルの設定に互換性がない場合、警告と推奨をログに出力します。
- SkeletonDataAsset no file Error : Json またはバイナリファイルが割り当てられていない
SkeletonDataAsset
からSkeletonData
をクエリするときにエラーをログに出力します。
- Atlas Extension Warning :
- Editor Instantiation
- Default Slot Z-Spacing : 新しくインスタンス化されたSkeletonRendererまたはSkeletonGraphicコンポーネントのデフォルトのZ Spacingパラメーターを設定します。
- Default Loop : 新しくインスタンス化されたSkeletonRendererまたはSkeletonGraphicコンポーネントのデフォルトの
Loop
パラメーターを設定します。 - Physics Inheritance
- Default Position : 新しくインスタンス化されたSkeletonRendererまたは SkeletonGraphicコンポーネントのデフォルトのPhysics Inheritance - Positionのスケール係数パラメーターを設定します。
- Default Rotation : 新しくインスタンス化されたSkeletonRendererまたは SkeletonGraphicコンポーネントのデフォルトのPhysics Inheritance - Rotationのスケール係数パラメーターを設定します。
- Mecanim Bake Settings
- Include Folder Name in Event : 有効にすると、Mecanimのイベントは
"FolderNameEventName"
という名前のメソッドを呼び出し、無効にすると、"EventName"
を呼び出します。
- Include Folder Name in Event : 有効にすると、Mecanimのイベントは
- Handles and Gizmos
- Editor Bone Scale : Sceneビューで表示されるボーンや同様のギズモ要素のサイズを設定します。
- Prefabs
- Fix Prefab Overr. MeshFilter : 同じ名前のスケルトンコンポーネントのInspectorパラメーター( Advancedセクション)のグローバル設定です。そのコンポーネントパラメーターが
Use Global Settings
に設定されている場合、この設定が使用されます。
- Fix Prefab Overr. MeshFilter : 同じ名前のスケルトンコンポーネントのInspectorパラメーター( Advancedセクション)のグローバル設定です。そのコンポーネントパラメーターが
- Timeline Extension - Timeline拡張UPMパッケージに関連する項目
- Default Mix Duration : 新しく作成した
Spine Animation State Clips
のDefault Mix Duration
パラメーターのデフォルト値を設定します。 - Use Blend Duration : 新しく作成した
Spine Animation State Clips
のデフォルトのUse Blend Duration
パラメーターを設定します。
- Default Mix Duration : 新しく作成した
Spineアセットの更新
開発中にスケルトンデータやテクスチャアトラスファイルを更新したい時は、単純にこれらのファイル(.json
、.skel.bytes
、.atlas.txt
、.png
)を上書きするだけで更新できます。Spineエディターからアセットを再エクスポートしたら、エクスポートしたファイルをプロジェクトの Assets
フォルダのサブフォルダにコピーし、既存のファイルを上書きしてください。
Unityはこれらのファイルの変更を検出し、変更されたアセットを自動的に再インポートします。再インポート後は、以前にインポートしたSpineアセットへの参照はすべてそのままで、最新のデータを使用します。
注意: 時々、Unityがファイルの変更を認識できないことがあります。この場合、UnityのProjectパネルで、再インポートしたいSpineのアセットが入っているフォルダを探し、そのフォルダを右クリックして、コンテキストメニューから
Reimport
を選択してください。
Skeleton Data Asset
スケルトンデータアセット(接尾辞が _SkeletonData
になっているアセット)には、スケルトンを構成するボーンの階層、スロット、表示順序、アニメーションなどの情報が保管されています。spine-unityランタイムで提供される他のコンポーネントは、このスケルトンデータアセットを参照・共有して、スケルトンのアニメーションや表示を行います。
スケルトンデータアセットを詳しく確認または修正するには、まずUnityのProjectパネルで選択します。するとInspectorパネルにスケルトンデータのすべてのプロパティが表示され、確認や修正ができます。
Skeleton Data
SkeletonDataセクションでは、スケルトンの一般的なインポート設定を行います。
-
Scale : このデータアセットを参照するすべてのスケルトンインスタンスに影響するカスタムインポートスケール値を指定できます。値を変更すると、このスケルトンのすべてのインスタンスに直ちに影響します。
注意: 例えば、32pxのアートワークを1つのゲームユニット(単位)に正確に合わせたい場合(アタッチメントの画像がSpineでスケーリングされていない場合)この
Scale
パラメーターを1/px_per_unit
に設定することができます。例えば、32px/unit
の場合、Scale
を1/32 = 0.03125
に設定します。 -
SkeletonData Modifiers :
.json
または.skel.bytes
からのロードが完了した後に、ユーザーがスケルトンデータアセットに追加処理を加える方法を提供します。 詳細についてはSkeletonData Modifierアセットセクションを参照してください。 -
Blend Modes - Upgrade : 古い
BlendModeMaterialAsset
を、以下のネイティブなBlend Mode Materialsのプロパティにアップグレードします。 -
Blend Mode Materials : 特殊なブレンドモードを使用しているスケルトンのスロットには、追加のマテリアルが必要です。これらのマテリアルは、
BlendModeMaterialAsset
が古いUnityやspine-unityのバージョンで使用されていない限り、インポート時に自動的に設定されます。割り当てられたBlendModeMaterialAsset
は、前述のBlend Modes - Upgrade
ボタンでアップグレードすることをお勧めします。これにより、Unityの新しいバージョンでの問題を防ぐことができます。ブレンドモードごとのマテリアルテンプレートはSpine Preferencesでカスタマイズできます。- Apply Additive Material : このパラメーターを有効にすると、
Additive(加算)
ブレンドモードを持つスロットにもマテリアルが生成されます。ストレートアルファワークフローを使用する場合はこのパラメーターを有効にします。PMAワークフローを使用している場合は、Normal(通常)
とAdditive(加算)
が設定されているスロットを同じPMAマテリアルで描画することができるため、このパラメーターは必要ありません。 - Additive Materials、Multiply Materials、Screen Materials : これらのリストには、各ブレンドモードで現在使用されているブレンドモードマテリアルが表示されます。
- Apply Additive Material : このパラメーターを有効にすると、
Atlas
アトラスの参照は、スケルトンがレンダリングを行うために、エクスポートされた画像をそれぞれの画像名に従って各画像領域に分解するために使用されます。
上の画像の Atlas Assets
の配列は、アトラスアセット(_Atlasで終わるアセット)ごとに1つのエントリが自動的に入力されます。
必要なアトラスアセットの自動割り当てに失敗してしまった場合は、Atlas Assets
の Size
を必要な量に合わせて変更して、必要なアトラスアセットを Element0
- ElementN
に手動で割り当てることができます。
Mix Settings
スケルトンデータアセットでは、アニメーションのミックスタイムを指定することができます。
Default Mix Duration
では、デフォルトのミックスタイムを秒単位で入力できます。
Add Custom Mix
ボタンをクリックし、Custom Mix Durations
セクションにMix Durationを設定することで、上のDefault Mix Durationの値よりも優先される、特定の2つのアニメーション間のミックスタイムを定義することができます。
スケルトンデータアセットを使用するコンポーネント(Skeleton Animationコンポーネントなど)は、アニメーションを再生する際にこのミックスタイムを使用します。
Preview
スケルトンデータアセットのPreviewセクションでは、アセットに含まれるすべてのボーン、スロット、アニメーション、スキン、イベントを確認することができます。
各アニメーションの左側にある再生ボタンでアニメーションを再生したり、Slots
セクションの Show Attachments
でそれぞれのスロットのライブアップデートを見ることができます。タイムラインバーには、すべてのイベントが紫色のマーカーで表示されます。再生中にマーカーにカーソルを合わせると、イベント名が表示されます。
Create Animation Reference Assets
ボタンを使用するとスケルトンのすべてのアニメーションのリファレンスアセットを生成できます。AnimationReferenceAsset
は、単一のSpine.Animation
を参照するUnityアセットとして機能し、Inspectorでコンポーネントのプロパティに割り当てることができます。
Skeleton Mecanim
SpineのデフォルトのアニメーションシステムではなくUnityのMecanimアニメーションシステムを使用したい場合は、Generate Mecanim Controller
でMecanimコントローラーを生成して割り当てることができます。
Skeleton Baking
注意: Bakingは特殊なツールであり、spine-unityでスケルトンを使用する際に推奨される方法ではありません!また、SkeletonMecanim、SkeletonAnimation または SkeletonGraphic (UI)コンポーネントには使用できません!代わりに、スケルトンを
MeshRenderer
と互換性のあるアニメーションクリップを持ちTransforms
の固定された階層を持つ、柔軟性の低いPrefabにベイクダウンします。 Spineの機能の多くはUnityのアニメーションシステムには存在しないので、変換することができず、プロセスの中で無視されます。
Skeleton Baking Window
を開くには、SkeletonDataAsset
のInspectorの右上にある歯車のアイコンをクリックし、Skeleton Baking
を選択します。
サポートされている機能とサポートされていない機能の詳細なリストは、SkeletonBaker.csに記載されています。
注意: Bakingは、最近追加されたUnityの2Dアニメーションシステムではなく、以前からあった3D
MeshRenderer
ベースのシステムを使用しています。
Texture Atlasアセット
テクスチャアトラスアセットには、スケルトンで使用されるイメージに関する情報が含まれています。すなわち、どのテクスチャアトラスページにイメージが保存されているかや、テクスチャアトラスページ上のUVテクスチャ座標が含まれています。
テクスチャアトラスページのマテリアルを表示するには、Materials
配列のマテリアルアセットをダブルクリックします。
注意: ご自身でテクスチャアトラスアセットが参照するマテリアルやテクスチャを修正することができます。テクスチャを変更する際は、UVテクスチャ座標が有効であることを確認してください。
SkeletonRenderer
コンポーネントはレンダリングに通常のMeshRenderer
を使用するので、マテリアルやテクスチャはキューブやクアッドなどに割り当てられたときと同じように普通に適用されます。そのため、必要に応じてテクスチャアトラスアセットのマテリアルでテクスチャを置き換えたり、前処理をすることができます。
Set Mipmap Bias to -0.5
ボタンは高度な設定で、アトラステクスチャで Generate Mip Maps
が有効になっている場合に、ぼやけた外観を補正するために使用できます。
Apply Regions as Texture Sprite Slices
ボタンを押すと、アトラスの各画像要素に対してスプライトを生成することができます。生成されたスプライトは、テクスチャアトラスイメージ(png
ファイル)の領域を参照しており、Unityのスプライトアセットとして使用できます。
SkeletonData Modifierアセット
SkeletonData modifierアセットは、.json
または .skel.bytes
ファイルからのロードが完了した後に、ユーザーがスケルトンデータアセットに追加処理を加える方法を提供します。
SkeletonDataAssetのInspectorにはアセットを追加できる Skeleton Data Modifiers
のリストがあります。
カスタムSkeletonDataModifierAssetクラスを書くには
独自のカスタムSkeletonDataModifierAsset
クラスを書いて、.json
または .skel.bytes
ファイルから読み込んだ後のスケルトンデータアセットに追加処理を加えることができます。SkeletonDataModifierAsset
は、抽象的な ScriptableObject
クラスで、ここから独自のクラスを派生させることができます。
-
SkeletonDataModifierAsset
から派生した新しいクラスを作成し、void Apply (SkeletonData skeletonData)
メソッドを実装します。CreateAssetMenu
クラス属性を追加して、Asset -> Create
メニューにクラスのエントリをリストアップします。C#[[CreateAssetMenu(menuName = "TopMenu/Submenu/SubSubmenu", order = 200)]
public class BlendModeMaterialsAsset : SkeletonDataModifierAsset {
public override void Apply (SkeletonData skeletonData) {
...
}
} -
Projectパネルで任意のフォルダを選択し、新しく作成した
Asset -> Create
メニューを選択して、新しいクラスのインスタンスを作成します。作成したアセットを、SkeletonDataアセットのSkeleton Data Modifiers
リストの要素に割り当てます。
Apply(skeletonData)
は、.json
または .skel.bytes
ファイルからのデータのロードが完了した後に呼び出されます。
BlendModeMaterialsAsset Modifier Asset (旧式)
注意: spine-unity では、各SkeletonDataAssetでスロットのブレンドモード
Additive(加算)
、Multiply(乗算)
、Screen(スクリーン)
のネイティブサポートを提供し、新しくインポートされた各SkeletonDataAsset
では自動的にセットアップが行われます。BlendModeMaterialAssets
は廃止され、SkeletonDataAsset
のネイティブ プロパティに置き換えられました。SkeletonDataAsset
のInspectorには廃止されたBlendModeMaterialAsset
をアップグレードするための新しいBlend Modes - Upgrade
ボタンがあります。このアップグレードは、Unity 2020.1以降のバージョンで報告されたBlendModeMaterialAsset
の問題を防ぐために、インポートおよび再インポートされたアセットに対して自動的に実行されます。
BlendModeMaterialsAsset
は、spine-unityに含まれるSkeletonData modifierのアセットクラスです。Spineエディターで Additive(加算)
、Multiply(乗算)
、Screen(スクリーン)
の各ブレンドモードが割り当てられたスロット内のアタッチメントのレンダリングに使用できるマテリアルへの参照を保持しています。
BlendModeMaterialsアセットに格納されているマテリアルの参照は、読み込まれたアタッチメントに適切なテクスチャを使用する新しいマテリアルを生成するためのテンプレートとして使用されます。
spine-unityランタイムには、Default BlendModeMaterials
という名前の BlendModeMaterialsAsset
がパッケージされており、すぐに使用できます。この付属のアセットを使用することで、特別なブレンドモードを持つスロットのアタッチメントが、付属のデフォルトの Multiply(乗算)
と Screen(スクリーン)
シェーダー、Spine/Blend Modes/Skeleton PMA Multiply
と Spine/Blend Modes/Skeleton PMA Screen
を使用できるようになります。
異なるマテリアルやシェーダー、異なる設定のマテリアルを使用する必要がある場合は、Create -> Spine -> SkeletonData Modifiers -> Blend Mode Materials
で新しいBlendModeMaterialsAsset
を作成してください。そして、作成したアセットにマテリアルのテンプレートを割り当てます。