ライセンスについて
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(アニメーションクリーンアップ)
が無効になっていることを確認してください。そうしないと、セットアップポーズと同じキーがエクスポートされなくなります。-
Pack(パック)
チェックボックスの下のPack Settings(パック設定)
をクリックします。すると Texture Packer Settings(テクスチャ・パッカー設定) ウィンドウが開きます。 -
右下の
Atlas extension(アトラス拡張子)
というテキストボックス内で.atlas.txt
が設定されていることを確認してください。 -
For spine-unity 4.3 and newer: Disable
Premultiply alpha
and enableBleed
. -
これでTexture Packer Settings(テクスチャ・パッカー設定)ウィンドウでの操作は完了です。
OK
をクリックして閉じてください。
-
-
Export(エクスポート)ウィンドウで出力フォルダを選択してください(新しく空のフォルダーを作成することを推奨します)
-
Export(エクスポート)
をクリックしてください。 -
すると以下の3種類のファイルが書き出されます:
skeleton-name.json
またはskeleton-name.skel.bytes
: これはスケルトンとアニメーションのデータを含んでいます。skeleton-name.atlas.txt
: これはテクスチャアトラスの情報を含んでいます。- 1つまたは複数の
.png
ファイル : これはテクスチャアトラスの各ページで、スケルトンが使用するイメージを含んでいます。
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では、テクスチャ・パッカー設定を通じて、アトラステクスチャのエクスポート方法として2つの基本的なワークフローを提供しています:
- ストレートアルファ (Unity用では推奨)
テクスチャ・パッカー設定で
Premultiply alpha
を無効に、Bleed
を有効にする。 - 乗算済みアルファ(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へのインポート
- 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つの基本的なワークフローがあります :
- ストレートアルファ (Unity用では推奨)
- 乗算済みアルファ(Spineエディター内でのデフォルト設定。ガンマ色空間で事前に乗算されます)
正しいインポートのためのPreferencesパラメーター Auto-Import Settings
重要な注意事項: テクスチャのインポート設定とマテリアル設定は、アトラステクスチャのエクスポート設定と一致させることが非常に重要です。Spine Unityランタイムでは、Unityの Preferences
ウィンドウ内にSpine Preferencesセクションを提供しています。こちらは Edit - Preferences
(Macの場合は Unity - Preferences
)からアクセス可能です。このセクションには、適切な設定を保証するための Auto-Import settings が用意されています。
- バージョン4.3以降、Preferencesセクションには
Switch Texture Workflow
というボタンが追加され、Straight Alpha
またはPMA
への迅速な切り替えが可能となりました。これにより、下記(2)および(3)の手動調整が不要となります。 - Atlas Texture Settingsパラメーターは、新規インポートされたアトラステクスチャに適切なテクスチャインポート設定を自動的に適用するために使用されます。ストレートアルファワークフローからPMAへ、またはその逆へ切り替える際には、このプリセットの設定調整が必要となります。
Additive Material
、Multiply Material
、およびScreen Material
は、各ブレンドモードのテンプレート素材を定義します。ストレートアルファワークフローからPMAへ、またはその逆へ切り替える際には、これらも適切に調整する必要があります。
ストレートアルファワークフロー(spine-unity 4.3以降では既にデフォルト設定となっています)を使用する場合:
- a)
Switch Texture Workflow
-Straight Alpha
ボタンを使用して、プリセットを一括で切替えます。 - b) または、
Atlas Texture Settings
を手動でStraightAlphaTexturePreset
に設定し、ブレンドモードマテリアルをSkeletonStraightAdditive
、SkeletonStraightMultiply
、およびSkeletonStraightScreen
に設定してください。
乗算済みアルファワークフロー (ガンマ色空間のみで利用可能)の場合:
- a)
Switch Texture Workflow
-PMA
ボタンを使用して、プリセットを一括で切替えます。 - b) または、
Atlas Texture Settings
を手動でPMATexturePreset
に設定し、ブレンドモードマテリアルをSkeletonPMAAdditive
、SkeletonPMAMultiply
、およびSkeletonPMAScreen
に設定してください。これはspine-unity 4.2以前ではデフォルト設定でした。
独自の TextureImporter
Preset
アセットやブレンドモードマテリアルテンプレートを作成し、ここに割り当てることも可能です。自作される際は、使用したブレンドモードを反映させるため、PMA
または Straight
を名前に含めることをお勧めいたします。
透明領域の周囲に暗い縁取りが見られたり、アタッチメント画像の周囲にカラフルな縞模様が発生する場合は、インポート設定の不備が原因である可能性が非常に高いです。
テクスチャパッカーのエクスポート設定と、テクスチャおよびマテリアルの正しいインポート設定:
-
ストレートアルファ (Unity用では推奨)
テクスチャ・パッカー設定で
Premultiply alpha
を無効、Bleed
を有効
UnityのTexture設定でsRGB (Color Texture)
とAlpha Is Transparency
を有効
UnityのMaterialのパラメーターStraight Alpha Texture
を有効に設定Spineのエクスポート設定が初めての方は、まず「初心者のためのSpineからUnityへのエクスポート」をご確認ください。
-
乗算済みアルファ(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
パラメーターを有効にしてください。乗算済みアルファテクスチャを使用される場合は、このパラメーターが無効になっていることをご確認ください。
ストレートアルファを推奨する理由:
- リニアとガンマの両方の色空間に対応 - リニア色空間 (Unityの新規プロジェクトにおけるデフォルト設定) を使用する場合、ストレートアルファを使用する必要があります。エクスポート時にガンマ色空間で事前乗算が行われるため、インポート時にリニア色空間に変換すると境界線が正しく表示されません。この組み合わせが検出されると、ログに警告メッセージが表示されます。
- 標準Unityシェーダーとの互換性 - ほとんどのUnityシェーダーはストレートアルファテクスチャを想定しています。非Spineシェーダーで乗算済みアルファを使用すると、アタッチメント画像の周囲に誤った黒い境界線が生じる可能性があります。
- ワークフローの簡素化 - あらゆる環境で通用する単一のワークフローは、複雑さとエラー発生の可能性を低減します。
使用中のアトラステクスチャワークフローをストレートアルファと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
ツールウィンドウで行います。
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 : 新しくインポートされたスケルトンのアトラステクスチャのために作成されたマテリアルに割り当てられるデフォルトのシェーダーを設定します
- 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
をクエリするときにエラーをログに出力します。
- 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
に設定されている場合、この設定が使用されます。 - Optimize Preview Meshes : 有効にすると、ビルド前のステップでSpineプレハブプレビューメッシュが削除され、ビルドサイズが縮小されます。プロジェクト内のすべてのプレハブが処理されるため、ビルド時間が長くなります。
- Fix Prefab Overr. MeshFilter : 同じ名前のスケルトンコンポーネントのInspectorパラメーター( Advancedセクション)のグローバル設定です。そのコンポーネントパラメーターが
- Unsafe Build Defines
- Direct Data Access : Unsafe(非安全)な直接データアクセスを許可します。現在は、
.skel.bytes
ファイルのロード時に、より少ないメモリ割り当てでロードすることに影響します。
- Direct Data Access : Unsafe(非安全)な直接データアクセスを許可します。現在は、
- 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(加算)
ブレンドモードのスロットにもマテリアルが生成されます。使っているスケルトンコンポーネントでAdvanced - PMA Vertex Colors
を有効にしている場合(デフォルト)、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
を作成してください。そして、作成したアセットにマテリアルのテンプレートを割り当てます。