ライセンスについて

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(アニメーションクリーンアップ) が無効になっていることを確認してください。そうしないと、セットアップポーズと同じキーがエクスポートされなくなります。

    1. Pack(パック) チェックボックスの下の Pack Settings(パック設定) をクリックします。すると Texture Packer Settings(テクスチャ・パッカー設定) ウィンドウが開きます。

    2. 右下の Atlas extension(アトラス拡張子) というテキストボックス内で .atlas.txt が設定されていることを確認してください。

    3. For spine-unity 4.3 and newer: Disable Premultiply alpha and enable Bleed.

    4. これで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ファイル : これはテクスチャアトラスの各ページで、スケルトンが使用するイメージを含んでいます。

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では、テクスチャ・パッカー設定を通じて、アトラステクスチャのエクスポート方法として2つの基本的なワークフローを提供しています:

  1. ストレートアルファ (Unity用では推奨) テクスチャ・パッカー設定で Premultiply alpha を無効に、 Bleed を有効にする。
  2. 乗算済みアルファ(PMA)(Spineエディター内でのデフォルト設定。ガンマ色空間で事前に乗算されます) テクスチャ・パッカー設定で Premultiply alpha 有効にする。

当社はストレートアルファを使用することを推奨しています。なぜならストレートアルファはリニア色空間とガンマ色空間の両方と互換性があるためです。Unityでは最近、新規プロジェクトにおいてデフォルトでリニア色空間が使用されるようになりましたが、乗算済みアルファテクスチャはリニア色空間と互換性がありません(ガンマからリニア空間への変換時に境界が正しく表示されなくなる原因となります)。詳細は「Unityにおけるリニア vs ガンマ色空間」をご覧ください。

乗算済みアルファワークフローは、ガンマ色空間で使用する場合、より良いmip-mapの生成などいくつかの利点はありますが、ストレートアルファがもたらす互換性の利点は一般的にこれらの利点を上回ります。

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

Unityにおけるリニア vs ガンマ色空間

重要な注意事項: Unityプロジェクトで使用する色空間は、ブレンド処理の見た目に大きな影響を与えるため、早い段階で決定することが非常に重要です。これは、アルファブレンディングや半透明部分の見え方だけでなく、特殊効果の加算/乗算/スクリーンブレンドにも影響します。

Unityでは、新規プロジェクトにおいてデフォルトでリニア色空間が使用されます。しかしながら、多くのSpineユーザーは、Photoshopなどの外部エディターでレイヤー分けや色補正を施した2Dアセットを扱っています。これらの外部エディターではデフォルトでガンマ空間でのブレンド処理が行われます。その結果、Unityでブレンドされた色は、元のアートワークと比較してくすみや彩度の低下が見られ、不満を感じる場合があるでしょう。

そのため、プロジェクトをガンマ(Gamma)色空間に切り替えることを一般にお勧めしています。これにより、より直感的なブレンドが可能となり、元のデザインにより良く合致します。

ただし、リニア(Linear)色空間も依然として適切な場合があります。特に、動的ライティングを備えたリアルな3D環境でSpineスケルトンを使用される場合には、こちらが適している場合があります。

ガンマ色空間の利点

  • ブレンディングがより直感的な挙動を示します(画像編集ソフトはデフォルトでガンマ空間でのブレンディングを実行します)。
  • あらゆる画像編集ソフトで事前に作成し、結果をプレビューすることが容易です。

リニア色空間の利点

  • 3D照明:角度依存の光減衰(2Dスケルトンでは法線マップ経由で実現)は物理的により正確になります。
  • 加算光レイヤーを重ねる際、光ピクセルの加算がより物理的に現実的な方法で処理されます。(これは望ましい場合もあればそうでない場合もあります)
  • ポストプロセス効果はリニア色空間で最も適切に動作します。

Unityプロジェクトの色空間は、 Edit - Project Settings (Macでは Unity - Project Settings) から、Player - Other Settings - Color Space を選択してガンマに変更できます。

Spineエディターの色空間

Spineエディターはデフォルトでガンマ色空間を使用しますが、Spine - 設定 - ビューポートでリニア色空間に切り替えることが可能です。 プロジェクトの色空間を決定されましたら、一貫した結果を得るために、Unityプロジェクトに合わせてSpineエディターの設定も調整されることを強くお勧めいたします。

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. ストレートアルファ (Unity用では推奨)
  2. 乗算済みアルファ(Spineエディター内でのデフォルト設定。ガンマ色空間で事前に乗算されます)

正しいインポートのためのPreferencesパラメーター Auto-Import Settings

重要な注意事項: テクスチャのインポート設定とマテリアル設定は、アトラステクスチャのエクスポート設定と一致させることが非常に重要です。Spine Unityランタイムでは、Unityの Preferences ウィンドウ内にSpine Preferencesセクションを提供しています。こちらは Edit - Preferences(Macの場合は Unity - Preferences)からアクセス可能です。このセクションには、適切な設定を保証するための Auto-Import settings が用意されています。

Spine Preferences - straight alpha presets

  1. バージョン4.3以降、Preferencesセクションには Switch Texture Workflow というボタンが追加され、Straight Alpha または PMA への迅速な切り替えが可能となりました。これにより、下記(2)および(3)の手動調整が不要となります。
  2. Atlas Texture Settingsパラメーターは、新規インポートされたアトラステクスチャに適切なテクスチャインポート設定を自動的に適用するために使用されます。ストレートアルファワークフローからPMAへ、またはその逆へ切り替える際には、このプリセットの設定調整が必要となります。 Spine Preferences - Atlas Texture Settings Spine Preferences PMA Preset Selection
  3. Additive MaterialMultiply Material、および Screen Material は、各ブレンドモードのテンプレート素材を定義します。ストレートアルファワークフローからPMAへ、またはその逆へ切り替える際には、これらも適切に調整する必要があります。 Spine Preferences - Blend Mode Materials Spine Preferences Blend Mode Material Selection

ストレートアルファワークフロー(spine-unity 4.3以降では既にデフォルト設定となっています)を使用する場合:

  • a) Switch Texture Workflow - Straight Alpha ボタンを使用して、プリセットを一括で切替えます。
  • b) または、Atlas Texture Settings を手動で StraightAlphaTexturePreset に設定し、ブレンドモードマテリアルを SkeletonStraightAdditiveSkeletonStraightMultiply、および SkeletonStraightScreen に設定してください。

乗算済みアルファワークフロー (ガンマ色空間のみで利用可能)の場合:

  • a) Switch Texture Workflow - PMA ボタンを使用して、プリセットを一括で切替えます。 Spine Preferences - PMA presets
  • b) または、Atlas Texture Settings を手動で PMATexturePreset に設定し、ブレンドモードマテリアルを SkeletonPMAAdditiveSkeletonPMAMultiply、および SkeletonPMAScreen に設定してください。これはspine-unity 4.2以前ではデフォルト設定でした。

独自の TextureImporter Preset アセットやブレンドモードマテリアルテンプレートを作成し、ここに割り当てることも可能です。自作される際は、使用したブレンドモードを反映させるため、PMA または Straight を名前に含めることをお勧めいたします。

透明領域の周囲に暗い縁取りが見られたり、アタッチメント画像の周囲にカラフルな縞模様が発生する場合は、インポート設定の不備が原因である可能性が非常に高いです。

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

  1. ストレートアルファ (Unity用では推奨) テクスチャ・パッカー設定で Premultiply alpha を無効、 Bleed を有効
    UnityのTexture設定で sRGB (Color Texture)Alpha Is Transparency を有効
    UnityのMaterialのパラメーター Straight Alpha Texture を有効に設定

    Spineのエクスポート設定が初めての方は、まず「初心者のためのSpineからUnityへのエクスポート」をご確認ください。

  2. 乗算済みアルファ(Premultiplied Alpha)の場合 テクスチャ・パッカー設定で Premultiply alpha(乗算済みアルファ) を有効
    UnityのTexture設定で sRGB (Color Texture)Alpha Is Transparencyを無効
    UnityのMaterialのパラメーター Straight Alpha Texture を無効に設定

注意: PMAテクスチャを使用している場合、従来は sRGB (Color Texture) を有効にすることを推奨していましたが、Generate Mip Maps が有効な場合、この組み合わせにより白い継ぎ目が生じる可能性があるので、このアーティファクトを回避するため、またガンマ空間においては不都合がないことから、現在はPMAテクスチャでは sRGB (Color Texture) を無効にしておくことを推奨しています。

デフォルト設定:

  • Spineエディター: テクスチャパッカーの設定は、乗算済みアルファ(Premultiply alphaが有効)がデフォルトです。
  • spine-unity 4.3 および 以降のバージョン: インポート設定は、ストレートアルファワークフローがデフォルトです。
  • spine-unity 4.2 および 以前のバージョン: インポート設定は、乗算済みアルファワークフローがデフォルトです。

spine-unityランタイムに付属するSpineシェーダーは、両方のワークフローに対応しています。ストレートアルファテクスチャを使用される場合は、マテリアル上で Straight Alpha Texture パラメーターを有効にしてください。乗算済みアルファテクスチャを使用される場合は、このパラメーターが無効になっていることをご確認ください。

ストレートアルファを推奨する理由:

  1. リニアとガンマの両方の色空間に対応 - リニア色空間 (Unityの新規プロジェクトにおけるデフォルト設定) を使用する場合、ストレートアルファを使用する必要があります。エクスポート時にガンマ色空間で事前乗算が行われるため、インポート時にリニア色空間に変換すると境界線が正しく表示されません。この組み合わせが検出されると、ログに警告メッセージが表示されます。
  2. 標準Unityシェーダーとの互換性 - ほとんどのUnityシェーダーはストレートアルファテクスチャを想定しています。非Spineシェーダーで乗算済みアルファを使用すると、アタッチメント画像の周囲に誤った黒い境界線が生じる可能性があります。
  3. ワークフローの簡素化 - あらゆる環境で通用する単一のワークフローは、複雑さとエラー発生の可能性を低減します。

使用中のアトラステクスチャワークフローをストレートアルファとPMA間で変更する際は、上記の説明に従い、すべてのテクスチャとマテリアルを適切に設定してください。現在の色空間は 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 : 新しくインポートされたスケルトンのアトラステクスチャのために作成されたマテリアルに割り当てられるデフォルトのシェーダーを設定します
    • Switch Texture Workflow (バージョン4.3以降) : プリセットを Straight Alpha または PMA ワークフローに素早く切り替えられます。これにより、後述の Atlas Texture Settings および Additive/Multiply/Screen Material の手動調整が不要となります。
    • Atlas Texture Settings : 新規にインポートされるアトラステクスチャに適用されるテクスチャインポート設定を定義します。ストレートアルファテクスチャワークフロー (推奨) では、こちらでStraightAlphaTexturePreset をご使用ください(Spineのテクスチャパッカー設定で Premultiply alpha が無効になっていることをご確認ください)。このプリセットは、spine-unity 4.3以降では既定で割り当てられています。このプリセットは、spine-unity 4.3以降では既定で割り当てられています。乗算済みアルファ(PMA)テクスチャ(Spineエディタのエクスポート既定値)を使用する場合は、PMATexturePresetをご利用ください。また、独自のTextureImporter Preset アセットを作成し、こちらに割り当てることも可能です。
    • Atlas Texture Settings : ここで選択したテクスチャインポート設定を、新しくインポートされたアトラステクスチャとマテリアルに適用します。Spineから Premultiply alpha(乗算済みアルファ) を有効(デフォルト)にしてアトラステクスチャをエクスポートしている場合、PMATexturePreset のままで問題ありません。もし Premultiply alpha(乗算済みアルファ) を無効にしているのであれば、StraightAlphaTexturePreset を設定してください。または、独自の TextureImporter Preset アセットを自作して、ここに割り当てることもできます。
    • Apply Additive Material : 新しくインポートされたSkeletonDataAssetsのデフォルトのApply Additive Materialの値を設定します。詳しくは SkeletonData のBlend Mode Materialsを参照してください。
    • Additive Material : Additive(加算)ブレンドモードのスロット用のマテリアルテンプレートです。詳しくは SkeletonData ブレンドモードマテリアルを参照してください。 上述のワークフローに適合する、ストレートアルファまたはPMAマテリアルのいずれかを選択してください。
    • Multiply Material : Multiply(乗算)ブレンドモードのスロット用のマテリアルテンプレートです。詳しくは SkeletonData ブレンドモードマテリアルを参照してください。 上述のワークフローに適合する、ストレートアルファまたはPMAマテリアルのいずれかを選択してください。
    • Screen Material : Screen(スクリーン)ブレンドモードのスロット用のマテリアルテンプレートです。詳しくは SkeletonData ブレンドモードマテリアルを参照してください。 上述のワークフローに適合する、ストレートアルファまたはPMAマテリアルのいずれかを選択してください。
  • 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 に設定されている場合、この設定が使用されます。
    • Optimize Preview Meshes : 有効にすると、ビルド前のステップでSpineプレハブプレビューメッシュが削除され、ビルドサイズが縮小されます。プロジェクト内のすべてのプレハブが処理されるため、ビルド時間が長くなります。
  • Unsafe Build Defines
    • Direct Data Access : Unsafe(非安全)な直接データアクセスを許可します。現在は、.skel.bytes ファイルのロード時に、より少ないメモリ割り当てでロードすることに影響します。
  • 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(加算) ブレンドモードのスロットにもマテリアルが生成されます。使っているスケルトンコンポーネントで Advanced - PMA Vertex Colors を有効にしている場合(デフォルト)、 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 を作成してください。そして、作成したアセットにマテリアルのテンプレートを割り当てます。

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