ライセンスについて

Spineランタイムをアプリケーションに組み込むにはSpineライセンスが必要です。

spine-unityランタイム ドキュメント

アセット

Unity用にSpineアセットをエクスポートする

エクスポートのユーザーガイド

以下の実行方法については、Spineユーザーガイド内で紹介されています :

  1. スケルトン&アニメーションデータのエクスポート
  2. スケルトンの画像を含むテクスチャアトラスのエクスポート

初心者のためのSpineからUnityへのエクスポート

以下は、SpineのアセットをUnity用にエクスポートする簡単な方法です。

  1. スケルトンとアニメーションを作成した後、Spineメニュー>Export...(エクスポート...) (CTRL+E)をクリックします。すると、Export(エクスポート)ウィンドウが開きます。

  2. Export(エクスポート)ウィンドウの左上にある JSON を選択してください。

    注意: バイナリスケルトンエクスポートの方がJSONエクスポートよりもサイズが小さくロードも早いので、製品段階ではJSONエクスポートではなくバイナリエクスポートを使用した方が良いでしょう。

  3. 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 をクリックして閉じてください。

  4. Export(エクスポート)ウィンドウで出力フォルダを選択してください(新しく空のフォルダーを作成することを推奨します)

  5. Export(エクスポート) をクリックしてください。

  6. すると以下の3種類のファイルが書き出されます:

    1. skeleton-name.json または skeleton-name.skel.bytes : これはスケルトンとアニメーションのデータを含んでいます。
    2. skeleton-name.atlas.txt : これはテクスチャアトラスの情報を含んでいます。
    3. 1つまたは複数の.pngファイル : これはテクスチャアトラスの各ページで、スケルトンが使用するイメージを含んでいます。

注意: 2D Toolkit ユーザーの場合、ステップ3(.pngと.atlas.txtのパッキング)は必要ありません。代わりにSkeletonDataAssetに適切なフィールドを用意して、tk2dSpriteCollectionData への参照を割り当てます。2D Toolkitのサポートを有効にする方法については、このページのインストール方法セクションを参照してください。

Unity向けのバイナリエクスポート

JSONではなくバイナリ形式でエクスポートすると、ファイルサイズが小さくなり、ロードが速くなります。

以下はspine-unityでバイナリ形式のエクスポートに変更する方法です。

  1. エクスポートウィンドウの左上で JSON の代わりに Binary(バイナリ) を選択します。
  2. 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つにすることができます。

画像をそれぞれのフォルダに配置したら、以下の手順でスケルトンをエクスポートします :

  1. Ctrl+E を押すか、ドロップダウンメニューで Export...(エクスポート...) を選択します。
  2. Texture Atlas(テクスチャアトラス)Pack(パック) を有効にして、右にある設定をAttachments(アタッチメント) から Image Folder(画像フォルダ) に変更します。
  3. (任意)Pack Settings(パック設定) の中で、右下の Options(オプション) にある Flatten Paths(パス平坦化)Combine Subdirectories(サブディレクトリ結合) が無効になっていることを確認してください(デフォルトでは無効です)。
  4. Export(エクスポート)をクリックします。

高度な情報 - 乗算済み vs ストレートアルファエクスポート

Spineでは、アトラステクスチャのエクスポート方法として、「Texture Packer Settings(テクスチャ・パッカー設定)」による2つの基本的なワークフローがあります :

  1. 乗算済みアルファ(デフォルト設定。ガンマ(Gamma)色空間で事前に乗算されます)
  2. ストレートアルファ

乗算済みアルファワークフローは、ストレートアルファに比べて加算ブレンドを使用するアタッチメントのための余分なドローコールが無いことや、より良いミップマップの生成などいくつかの利点があります。

エクスポートとインポートの設定を正しく一致させることが非常に重要です。Unityでの正しい設定については、高度な情報 - 乗算済み vs ストレートアルファインポートのセクションを参照してください。

SpineアセットのUnityへのインポート

  1. Unity Editorでご自身のUnityプロジェクトを開いてください。インストール方法セクションの説明に従って、プロジェクトにspine-unityランタイムが既に入っている状態にしておいてください。
  2. エクスポートされたファイル(.json.atlas.txt.png)のフォルダを開きます。
  3. エクスポートされたファイル(またはファイルを含むフォルダ)を、プロジェクトのAssetsフォルダの任意のサブフォルダにコピーします。これを行うには、エクスポートされたファイルをエクスプローラーまたはFinderウィンドウからUnityのProjectパネルにある任意のフォルダにドラッグしてください。

spine-unityランタイムは、追加されたファイルを検出すると自動的に必要な追加Unityアセットを生成します。

以下のアセットが生成されます:

  1. _Atlasは、テクスチャアトラスファイル(.atlas.txt)用のアセットです。これは、マテリアルと.atlas.txtファイルへの参照を保持します。
  2. _Materialは、各テクスチャアトラスページ(.png)用のアセットです。これは、シェーダー.pngテクスチャへの参照を保持します。
  3. _SkeletonDataは、スケルトンデータファイル(.json.skel.bytes)用のアセットです。これは.jsonまたは.skel.bytesファイルへの参照と、生成された _Atlas アセットを保持します。このアセットには、スケルトンのカスタムインポートおよびアニメーション設定も含まれます。詳しくはSkeleton Data Assetセクションを参照してください。

高度な情報 - 乗算済み vs ストレートアルファインポート

高度な情報 - 乗算済み vs ストレートアルファエクスポートで説明されている通り、Spineはアトラステクスチャをどのようにエクスポートするかについて2つの基本的なワークフローがあります :

  1. 乗算済みアルファ(デフォルト設定。ガンマ(Gamma)色空間で事前に乗算されます)
  2. ストレートアルファ

正しいインポート設定のための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 MaterialMultiply MaterialScreen Materialのマテリアルテンプレートがあります。ストレートアルファワークフローに切り替える場合、これらのテンプレートマテリアル参照もそれに応じて調整する必要があります。

Spine Preferences - Atlas Texture Settings Spine Preferences PMA Preset Selection

Spine Preferences - Blend Mode Materials Spine Preferences Blend Mode Material Selection

Spineから Premultiply alpha(乗算済みアルファ) を有効(デフォルト)にしてアトラステクスチャをエクスポートしている場合は、Atlas Texture SettingsPMATexturePreset、ブレンドモードマテリアルもそれぞれ SkeletonPMAAdditiveSkeletonPMAMultiplySkeletonPMAScreen のままで問題ありません。 Premultiply alpha を無効にしている場合は、Atlas Texture SettingsStraightAlphaTexturePreset に、そしてブレンドモードマテリアルもSkeletonStraightAdditiveSkeletonStraightMultiplySkeletonStraightScreen に設定してください。 または独自の TextureImporter Preset アセットやブレンドモードマテリアルを自作して割り当てることもできます。自作する場合は、使用するブレンドモードを反映させるために、PMA または Straight を含む名前を設定されることをお勧めします。

もし透明な領域の周りに黒い境界線が見えたり、アタッチメントの画像の周囲にカラフルなストライプが見えてしまう場合は、インポート設定が間違っている可能性があります。

テクスチャ・パッカーの正しいエクスポート設定およびテクスチャとマテリアルの正しいインポート設定

  1. 乗算済みアルファ(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) を無効にしておくことが推奨されるようになりました。

  1. ストレートアルファ(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パラメータが無効になっています。

しかし、ストレートアルファワークフローを使用したい場合もありえます。そのようなケースとしては以下が考えられます:

  1. リニア(Linear)色空間を使用している場合。この場合は必ずストレートアルファ使用してください
    事前乗算はガンマ(Gamma)空間で行われるため、インポート時にリニア(Linear)空間に変換し直すと境界線が発生してしまいます。この組み合わせがマテリアルで検出されると、警告ログメッセージが出力されます。
  2. 付属の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 ツールウィンドウで行います。

Spine SpriteAtlas Import Window

Sprite Atlas の準備手順:

  1. Assets - Create - Sprite AtlasSprite Atlas を作成します。
  2. Sprite AtlasのInspectorObjects for Packing に、アタッチメントとして使用するSpriteの入ったフォルダを追加します。
  3. (a) 2018.2以前のUnityバージョンでは、手動で Tight Packing を無効にし、Read/Write Enabled を有効にしてください。 (b) 2018.2以降のUnityバージョンでは、これらの設定は自動的に調整されます。 Spine SpriteAtlas Import Window
  4. 新しい Spine SpriteAtlas Import ウィンドウの Sprite Atlas プロパティに Sprite Atlasを割り当ててください。すると追加のアセットが自動的に生成されます。 Spine SpriteAtlas Import Window
  5. Load regions by entering Play modeを押すと、短時間だけ再生モードに切り替わり、また戻ってきて領域情報をロードします。これでSprite AtlasがSpineアトラスとして使用できるようになります。

.json または .skel.bytes スケルトンアセットでアトラスを使用する場合 :

  1. .json または .skel.bytes ファイルを、新しく作成したアトラスアセットと同じディレクトリに配置します。
  2. 配置したファイルを Spine SpriteAtlas Import ウィンドウの Skeleton json/skel file プロパティに割り当ててください。 Spine SpriteAtlas Import Window
  3. Import Skeleton を押して Sprite Atlas アセットを使った _SkeletonData ファイルを生成します。

Spine Preferences

spine-unityランタイムはUnityの Edit - Preferences(MacではUnity - Preferences)からアクセスできる Preferences ウィンドウに Spine セクションを追加します。ここでは、スケルトンのインポートやインスタンス化の際に使用されるデフォルト値を設定したり、spine-unityのアピアランスや更新動作をカスタマイズすることができます。

Spine Preferences Window

  • 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 をクエリするときにエラーをログに出力します。
  • Editor Instantiation
  • Mecanim Bake Settings
    • Include Folder Name in Event : 有効にすると、Mecanimのイベントは"FolderNameEventName"という名前のメソッドを呼び出し、無効にすると、"EventName"を呼び出します。
  • Handles and Gizmos
    • Editor Bone Scale : Sceneビューで表示されるボーンや同様のギズモ要素のサイズを設定します。
  • Prefabs
    • Fix Prefab Overr. MeshFilter : 同じ名前のスケルトンコンポーネントのInspectorパラメーター( Advancedセクション)のグローバル設定です。そのコンポーネントパラメーターが Use Global Settings に設定されている場合、この設定が使用されます。
  • Timeline Extension - Timeline拡張UPMパッケージに関連する項目
    • Default Mix Duration : 新しく作成した Spine Animation State ClipsDefault Mix Duration パラメーターのデフォルト値を設定します。
    • Use Blend Duration : 新しく作成したSpine Animation State ClipsのデフォルトのUse Blend 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 の場合、Scale1/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 MaterialsMultiply MaterialsScreen Materials : これらのリストには、各ブレンドモードで現在使用されているブレンドモードマテリアルが表示されます。

Atlas

アトラスの参照は、スケルトンがレンダリングを行うために、エクスポートされた画像をそれぞれの画像名に従って各画像領域に分解するために使用されます。

上の画像の Atlas Assets の配列は、アトラスアセット(_Atlasで終わるアセット)ごとに1つのエントリが自動的に入力されます。

必要なアトラスアセットの自動割り当てに失敗してしまった場合は、Atlas AssetsSizeを必要な量に合わせて変更して、必要なアトラスアセットを 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でスケルトンを使用する際に推奨される方法ではありません!また、SkeletonMecanimSkeletonAnimation または 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 クラスで、ここから独自のクラスを派生させることができます。

  1. 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) {
        ...
    }
    }
  2. 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 MultiplySpine/Blend Modes/Skeleton PMA Screen を使用できるようになります。

異なるマテリアルやシェーダー、異なる設定のマテリアルを使用する必要がある場合は、Create -> Spine -> SkeletonData Modifiers -> Blend Mode Materials で新しいBlendModeMaterialsAsset を作成してください。そして、作成したアセットにマテリアルのテンプレートを割り当てます。

次: 主要なコンポーネント 前: サンプル