インポータの詳細解説(「Unity Native」モード) - SpriteStudio/SS6PlayerForUnity GitHub Wiki

インポータの「Convert To Unity-Native」は、SpriteStudio6のデータをUnityの基本機能で近似の結果を得られるように変換インポートするためのモードです。

  • 通常パーツ: Sprite
  • マスクパーツ: SpriteMask
  • メッシュパーツ: SkinnedMesh / Mesh
  • root/NULLパーツ/ボーン・ジョイントパーツ: 通常のGameObject
  • アニメーションデータ: AnimationClip

に変換されます。
「Convert To Unity-Native」モードには、下記のオプション群があります。

Importer-UnityNative-Overview

上記の中で、注意していただきたいのが「高度(Advanced)なオプション」の中にあるオプション群です。
基本的に「高度(Advanced)なオプション」の中にあるオプション群は、通常の状態で使用している分には設定を変更する必要のないオプション群です。
これらの値を変更する時には、十分な注意を払うようにしてください。

再インポート時の注意について

「Convert To Unity-Native」モードには、(「SpriteStudio6」モードのように)「Tracking Assets(使用しているアセットを追跡して、フォルダなどが移動していても、格納場所を特定して上書する機能)」がありません(都合、パス名での追跡のみしか対応できないためです)。
つまり、インポートした状態から

などを変更してしまった場合、その変更した後のアセットを追跡することができないため、再インポート時に設定されている内容を使用したパス名で新規にデータが作られてしまいます。
その点に、十分に注意してください。

「Caution」

本項目には、本モードを使用する上での注意点が記載されています。
原則、こちらに記載してある内容と同じです。

Importer-UnityNative-Caution

「Basic」オプション

このグループには、基本的なインポート状態を設定するためのオプションがまとめられています。

Importer-UnityNative-Basic

Create Control-Prefab

「SpriteStudio6」モードの同名のオプションと同じ働きをします。

Use Script For "Control-Prefab" (Ver.2.1.0以降)

「SpriteStudio6」モードの同名のオプションと同じ働きをします。

Create Project Folder

「SpriteStudio6」モードの同名のオプションと同じ働きをします。

"Invisible" part to "Hide" attribute

「SpriteStudio6」モードの同名のオプションと同じ働きをします。

Set Texture "Read/Write Enable"

「SpriteStudio6」モードの同名のオプションと同じ働きをします。

Create Asset-Holder

チェックされている場合、インポートしたアニメーション用プレハブのRootに位置するGameObjectに「同じssaeに入っていたアニメーションを変換したアニメーションクリップ」をテーブルにまとめて格納するスクリプトを付加します(これを「アセットホルダ」と呼称しています)。
アニメーションクリップは原則「ac_(ssae名)_(アニメーション名)」の名前で格納されますが、アニメーションが多くなると判別が大変になります。
また、対応したPrefab(アニメーションクリップが前提としているGameObjectやコンポーネントの構成と同じ構成を持つPrefabなど)に割り当てないとアニメーションが正常に再生されないため、使用できるデータを一目できるようにするために設置されています。
原則、本オプションはチェックしておくことを推奨します。

「Collider」オプション (Ver.2.1.4未満)

このグループには、「当たり判定」データをインポートする時の設定を行うためのオプションがまとめられています。
ただし、(本グループは存在しているものの)Unity-Nativeモードが当たり判定に対応していないため、何を設定しても無効となります。
※Ver.2.1.4以降は本項目は削除されています。

「Overwrite Confirm」オプション

このグループには、データを更新インストールする際にデータの上書きの確認を行うかどうかのオプションがまとめられています。
「SpriteStudio6」モードの同名のグループと同じ内容・機能になります。

ただし、「Prefab-Effect」「Data-Project」「Data-Effect」「Data-Sequence」については、本「Convert To Unity-Native」モードでは出力されていないため、該当項目の設定は効果しません。

「Checking SSxx Version」オプション

このグループには、データのバージョンチェックを行って対応していないデータの無効バージョンのチェックなどを行うかどうかのオプションがまとめられています。
「SpriteStudio6」モードの同名のグループと同じ内容・機能になります。

高度(Advanced)なオプション

基本的に本オプション群はみだりに変更しないでください。
また、変更する際でもUnity及び本モードの動作仕様を十分に理解してから行うようにしてください(設定を間違えると誤動作などを起こす可能性があるオプション群です)。

Importer-UnityNative-AdvancedOverview

「Naming Assets」オプション

各データのアセット名を付ける際に、データ種別やsspj名を接頭語として付与するためのオプション群です。
「SpriteStudio6」モードの同名のグループと同じ内容・機能になります(設定できる項目が違うだけです)。

現在設定されているモード以外のモードの設定は操作できません。

Importer-UnityNative-AdvancedNamingAssets

Add SSPJ-Name

インポートしたSpriteStudio6のプロジェクト(sspj)のファイル名を追加します。

Texture

テクスチャに付ける接頭句を指定します(空欄にすると何も付与しません)。

Prefab-Sprite2D

アニメーション(をSpriteに変換した)プレハブに付ける接頭句を指定します(空欄にすると何も付与しません)。

Prefab-Particle(Ver.2.1.4未満)

エフェクト(をParticle-Systemに変換した)プレハブに付ける接頭句を指定します(空欄にすると何も付与しません)。
本モードはエフェクトの変換に対応していませんので、現実的には使用されていません。
※Ver.2.1.2までは将来拡張用の予備として予約設置していましたが、Ver.2.1.4以降では項目が削除されています。

Data-CellMap(Ver.2.1.4未満)

セルマップの静的データに付ける接頭句を指定します(空欄にすると何も付与しません)。
本モードはセルマップのデータを生成しませんので、現実的には使用されていません。
※Ver.2.1.2までは将来拡張用の予備として予約設置していましたが、Ver.2.1.4以降では項目が削除されています。

Animation-Clip

アニメーションの静的データ(アニメーションクリップ)に付ける接頭句を指定します(空欄にすると何も付与しません)。

Skinned-Mesh

アニメーション(Sprite2D)のメッシュパーツを変換したスキンメッシュのデータに付ける接頭句を指定します(空欄にすると何も付与しません)。

Material-Sprite2D(Ver.2.1.4未満)

アニメーション用マテリアルに付ける接頭句を指定します(空欄にすると何も付与しません)。
本モードはマテリアルを専用に生成しません(SS6PUのフォルダ内に入っているターゲット合成用マテリアルを使用します)ので、現実的には使用されていません。
※Ver.2.1.2までは将来拡張用の予備として予約設置していましたが、Ver.2.1.4以降では項目が削除されています。

Material-Particle(Ver.2.1.4未満)

エフェクト用マテリアルに付ける接頭句を指定します(空欄にすると何も付与しません)。
本モードはエフェクト機能の変換に対応しておらず・マテリアルを専用に生成しませんので、現実的には使用されていません。
※Ver.2.1.2までは将来拡張用の予備として予約設置していましたが、Ver.2.1.4以降では項目が削除されています。

「Naming Asset-Folders」オプション

各データ別の格納サブフォルダ名を変更することができるオプション群です。
「SpriteStudio6」モードの同名のグループと同じ内容・機能になります(設定できる項目が違うだけです)。

本グループも「Naming Assets」オプションと同様に、特殊な格納状態が必要になった時以外は変更する必要のないオプションです。

Importer-UnityNative-AdvancedNamingAssetFolders

Texture

テクスチャを格納するサブフォルダ名を指定します。

Prefab-Sprite2D

アニメーション(をSpriteに変換した)プレハブを格納するサブフォルダ名を指定します。

Prefab-Particle(Ver.2.1.4未満)

エフェクト(をParticle-Systemに変換した)プレハブを格納するサブフォルダ名を指定します。
本モードはエフェクトの変換に対応していませんので、現実的には使用されていません。
※Ver.2.1.2までは将来拡張用の予備として予約設置していましたが、Ver.2.1.4以降では項目が削除されています。

Animation-Clip

アニメーションの静的データ(アニメーションクリップ)を格納するサブフォルダ名を指定します。

Material-Sprite2D(Ver.2.1.4未満)

アニメーション用マテリアルを格納するサブフォルダ名を指定します。
本モードはマテリアルを専用に生成しません(SS6PUのフォルダ内に入っているターゲット合成用マテリアルを使用します)ので、現実的には使用されていません。
※Ver.2.1.2までは将来拡張用の予備として予約設置していましたが、Ver.2.1.4以降では項目が削除されています。

Material-Particle(Ver.2.1.4未満)

エフェクト用マテリアルを格納するサブフォルダ名を指定します。
本モードはエフェクト機能の変換に対応しておらず・マテリアルを専用に生成しませんので、現実的には使用されていません。
※Ver.2.1.2までは将来拡張用の予備として予約設置していましたが、Ver.2.1.4以降では項目が削除されています。

「Preset Material」オプション

アニメーションのターゲット合成に使用するマテリアルを設定するためのオプション群です。
それぞれの合成方式用に専用のシェーダを結びつけたマテリアルが設定されています(デフォルト状態のマテリアル群は「Assets/SpriteStudio6/Material/UnityNative/」の中にオリジナルが格納されています)。
ここにデフォルト以外のマテリアルを設定することによって、インポート時に独自のシェーダを割り当てることができます。

ただし、代替となるマテリアルに割り当てるシェーダは、SS6PUが「Convert To Unity-Native」モード専用に持っているシェーダ(「Custom/SpriteStudio6/UnityNative/Sprite/~」)と機能・プロパティ名(及びその変数型と対値の振る舞い)が互換である必要がありますので、独自で作成する時にはその点に注意を払ってください(互換性がないシェーダを使用した場合、表示が正常な結果にならない可能性が非常に高くなります)。

この項目に指定されているマテリアルは、(SS6PUモードの同名項目のマテリアルと異なり)そのまま描画で使用されるマテリアルです。

標準状態で割り当ててあるシェーダは、
Unity標準の「Sprites/Default」シェーダ
「SS6PUプレーヤー」のシェーダ(Custom/SpriteStudio6/SS6PU/Sprite/~)相当
の仕様を併せ持っています。

Importer-UnityNative-AdvancedPresetMaterial

Base Folder

何かの都合で本項目の内容が失われたりした(下記の各マテリアルが「None」などになってしまった)時に、一斉にマテリアルを割り当てるための簡易復旧目的で設置してあります。
本項目に、Projectウィンドウの(プリセットのマテリアルが格納されている)フォルダをドラッグ&ドロップすることで、その中に格納されているマテリアル名から復旧を行います。
※SS6PUの初期状態のマテリアル設定に戻したい場合は、SS6PUが格納されているフォルダ(普通であれば「SpriteStudio6」)の下の「Material/UnityNative」アセットフォルダをドロップしてください。

[Sprite]Mix

(バッチング許可用)「ミックス」に使用するマテリアルです。
※「バッチング許可用」は、(頂点変形やパーツカラーなどの機能を使用していない)通常パーツの描画に使用される(Unityの動的バッチングを許可した)マテリアルです。

[Sprite]Add

(バッチング許可用)「加算(Add)」に使用するマテリアルです。

[Sprite]Sub

(バッチング許可用)「減算(Subtract)」に使用するマテリアルです。

[Sprite]Mul

(バッチング許可用)「アルファ乗算(Multiple)」に使用するマテリアルです。

[Sprite]MulNA

(バッチング許可用)「乗算(Multiple-NonAlpha)」に使用するマテリアルです。

[Sprite]Scr

(バッチング許可用)「スクリーン(Screen)」に使用するマテリアルです。

[Sprite]Exc

(バッチング許可用)「除外(Exclude)」に使用するマテリアルです。

[Sprite]Inv

(バッチング許可用)「反転(Inverse)」に使用するマテリアルです。

[Sprite]Mix

(バッチング禁止用)「ミックス」に使用するマテリアルです。
※「バッチング禁止用」は、(頂点変形やパーツカラーなどの機能を使用しているため)Unityの動的バッチングが行われると不都合が生じてしまうパーツの描画に使用されるマテリアルです(動的バッチングを禁止指定しています)。

[Sprite]Add

(バッチング禁止用)「加算(Add)」に使用するマテリアルです。

[Sprite]Sub

(バッチング禁止用)「減算(Subtract)」に使用するマテリアルです。

[Sprite]Mul

(バッチング禁止用)「アルファ乗算(Multiple)」に使用するマテリアルです。

[Sprite]MulNA

(バッチング禁止用)「乗算(Multiple-NonAlpha)」に使用するマテリアルです。

[Sprite]Scr

(バッチング禁止用)「スクリーン(Screen)」に使用するマテリアルです。

[Sprite]Exc

(バッチング禁止用)「除外(Exclude)」に使用するマテリアルです。

[Sprite]Inv

(バッチング禁止用)「反転(Inverse)」に使用するマテリアルです。

[Mesh]Mix

メッシュパーツ用「ミックス」に使用するマテリアルです。

[Mesh]Add

メッシュパーツ用「加算(Add)」に使用するマテリアルです。

[Mesh]Sub

メッシュパーツ用「減算(Subtract)」に使用するマテリアルです。

[Mesh]Mul

メッシュパーツ用「アルファ乗算(Multiple)」に使用するマテリアルです。

[Mesh]MulNA

メッシュパーツ用「乗算(Multiple-NonAlpha)」に使用するマテリアルです。

[Mesh]Scr

メッシュパーツ用「スクリーン(Screen)」に使用するマテリアルです。

[Mesh]Exc

メッシュパーツ用「除外(Exclude)」に使用するマテリアルです。

[Mesh]Inv

メッシュパーツ用「反転(Inverse)」に使用するマテリアルです。


アニメーションのシーン配置後に必要な作業

「Convert To Unity-Native」モードでインポートしたデータは、再生するために追加の手順が必要です。
「インポートしたアニメーションクリップを割り当てる」作業になります。
「Convert To Unity-Native」モードで、この追加手順が必要な理由については、こちらを参照してください。

ここでは「Create Control-Prefab」「Create Asset-Holder」を、双方ともチェックした状態を前提に解説します。

ここでは「ComipoProject.sspj」というSpriteStudioプロジェクトを「Convert To Unity-Native」モードでインポートした後として解説を進めます。

プレハブをシーンに設置する

InitialPlay-UnityNative-AddStep01

インポートしたデータ(プレハブ)をシーンに設置します。

  1. 設置したい制御用プレハブ(jump_Control)をシーンに(ドラッグ&ドロップして)設置します。
  2. シーン上の「jump_Control」を一段階開き、直下にある「jump」(これがSpriteStudio6上でのアニメーション「jump」のrootパーツに相当します)を選択します。
  3. (GameObject「jump」に)「Script_SpriteStudio6_HolderAssetUnityNative」というコンポーネントが付いているのが解るかと思います。
    ※インポータの設定で「Create Asset-Holder」をチェックしていない場合はこのコンポーネントは存在しないため、次の対応するアニメーションクリップを探す作業は人力で行う必要があります。

※制御用プレハブの役割と有無の差については、こちらの解説を参照してください

アニメーションクリップを発見する

InitialPlay-UnityNative-AddStep02

「Script_SpriteStudio6_HolderAssetUnityNative」は「アセットホルダ」という呼称をしていますが、「Unity-Nativeモードでインポートしたデータで、同じssae内に入っているアニメーションのアニメーションクリップをまとめて置いてある」コンポーネントになります(AnimationClipはそのデータが対応したGameObject構成でないと正常に動作しないため、関連したアニメーションクリップをここにまとめてあります)。

アニメーションクリップは、原則「ac_(ssaeファイル名)_(アニメーション名)」の名称になっています(もしアセットホルダを作らない設定だった場合には、「(インポート指定したフォルダ)/(sspj名)/DataAnimationClip」の中に格納されていますので、そこを捜索してください)。

そのアセットホルダの中の希望のアニメーションクリップをクリックすると、そのアニメーションクリップがプロジェクトウィンドウの中で点灯しますので、格納場所の発見が容易になります。
このアニメーションクリップをプレハブに割り当てることになります。

アニメーションクリップをドラッグ&ドロップする

InitialPlay-UnityNative-AddStep03

一番簡単にUnity上で再生してみるには、発見したアニメーションクリップをアセットホルダが付いていたGameObject(例の場合には「jump_Control」の子の「jump」)にドロップすることです。
簡易的にAnimatorコンポーネントが作成され・アニメーションが設定されます。

アセットホルダが付いているGameObject(rootパーツに相当)以外にドロップすると、アニメーションデータの中に記録されているGameObjectの関係性と、実際のGameObjectの関係とが狂ってしまうため、正常にアニメーションが再生できませんので、注意してください。

Animatorができたら完了です

InitialPlay-UnityNative-AddStep04

アニメーションクリップをアニメーションオブジェクトにドロップすると、簡易的に作成されたAnimatorがProjectの中に追加されます。

この状態になると、再生が可能な状態になって・Sceneビューウィンドウなどにアニメーションオブジェクトが表示された状態になるはずです。

ここで何も表示されない場合は、こちらの項目をチェックしてみてください

また、各パーツのセルが正常に出ないで・紫色のベタで表示されたりする場合には、インポート設定の「Advanced Options: Preset Material」の内容がおかしい(設定が全てNoneになっていたりする)場合が多いです。


Animatorコンポーネントが付いていない理由について

「Convert To Unity-Native」モードは、インポート直後にはアニメーション(クリップ)を再生するためのコンポーネントが付加されていません。
そのため、再生するにはどのような形でかアニメーションクリップを再生するためのコンポーネントを付加する必要があります。

付加するGameObjectは(Animatorで再生する場合)

  • (「Create Control-Prefab」で制御用オブジェクトを作る設定の場合)制御用オブジェクトの直下にあるGameObject
  • (制御用オブジェクトがない場合)「PrefabSprite」フォルダのPrefabの最親GameObject

になります。

インポート直後から当該GameObjectにAnimatorコンポーネントを付加していない理由については、「アニメーションクリップを再生する方法が多岐に渡るため、下手に付けてしまうとかえって不便になる」ためとなります。
アニメーションを再生する方法として、大きく分けると下記のような形が考えられると思います。

  • Animatorコンポーネント(Mecanim)を使用して・ステートマシンを構成して再生する。
  • Animatorコンポーネントと独自のスクリプトを組み合わせて再生する。
  • Animation(レガシー)コンポーネントで再生する。
    ※ただし、SS6PUの出力するAnimationClipはAnimationでは再生できないはずです。
  • 「SimpleAnimation」などのAnimator代替コンポーネントを使用して再生する。

これらの派生まで含めると、制限も仕様も異なり、Animatorだけに限っても初期状態でステートマシン管理下にアニメーションクリップを配置してしまうのが得策とならない場合も多く存在します。
そのため、アニメーションクリップの運用時点から、使用者の都合で制御していただくために、初期状態でアニメーションクリップをプレハブに割り当てておりません。

何卒ご了承とご理解の程、お願い致します。