データのインポート手順 - SpriteStudioArchive/SS5PlayerForUnity_v1_2_1 GitHub Wiki
プロジェクト(.sspj) をインポートする
本パッケージではアニメーションデータをプロジェクト単位でインポートします。 テキストファイルを使用して複数のファイルをインポートするバッチインポート機能も使用可能です。詳しくはこちら。
まず、UnityのタイトルメニューのTools→SpriteStudio→Import SS5(.sspj)を選択します。
※上記メニューが存在しない場合は Unityを再起動してみてください。
それでも変わらない場合はUnityの新規プロジェクトを作成し本パッケージを再インポートしてお試しください。
OPTPiX SpriteStudio Import-Settingダイアログが表示されますので必要に応じて下記の設定を行います。
インポート設定を指定する
各設定項目の意味は下記の通りです
-
Collider-Thickness
SpriteStudioで設定した当たり判定をColliderとして変換を行う際にZ軸方向の厚みを設定します。 -
Attach Rigid-Body
当たり判定をColliderへ変換する際にRigid-Bodyをコンポーネントとして追加するかを設定します。 -
Create Control-prefab
チェックをONにすると、インポートしたアニメーションの上に 「アニメーション名_Control」という名前で、 「ユーザーが独自にカスタマイズする」ための制御用プレハブを作成します。 このチェックをONにしていても、すでに指定ディレクトリ直下に 「アニメーション名_Control」の名称のプレハブが存在している場合、本プレハブは上書き更新されません。 (つまり、該当する名称のプレハブがなく、当該チェックがONになっている場合にのみ、新規に作成されます。) -
Confirm overwrite-prefab
チェックを外すとプレハブの上書き確認をおこないません。 再インポートを繰り返し行う場合はOFFにしてみてください。 -
Default Configration (ボタン) ※v.1.1.5以降で搭載されています。
このボタンを押すと、記憶されている「直前にインポートした時の設定」を、初期設定に戻して再保存します。
インポート元のフォルダがなくなってしまっていたりした場合で、インポートに支障が出た場合、本ボタンで初期設定に戻してください。
保存先フォルダを指定する
設定が完了したらインポートするデータの保存先を予め選択しておきます。
保存先はProject ビュー上で 現在選択しているフォルダ の中になります。
Unity4 の場合は、 右ペイン上で選択しているフォルダ が対象になります。
左ペインで選択されているフォルダではありませんのでご注意ください。
インポートを開始する
「Import」ボタンを押して、SS5プロジェクトファイル(.sspj)を選択するとインポートが開始されます。
プロジェクトに登録された各アニメーションがUnityアセットに変換されて指定フォルダ内に保存されます。
※保存されていない場合はConsoleを開いてエラー等が出ていないかご確認ください(インポートに失敗した場合には「インポートが失敗しました・Consoleでエラーを確認してください」という旨のダイアログが開きます)。
インポートが完了すると指定フォルダ内に下記のデータが作成されます。
-
Textureフォルダ
使用しているテクスチャ(セルマップ)が格納されています。 -
Materialフォルダ
使用しているテクスチャと、SSのアニメーションデータを表示するための シェーダが割り当てられたMaterialが格納されています。 -
Prefabフォルダ
sspj内に定義されている各ssaeファイル毎に、Prefab化されて格納されます。 1つのssaeファイルが1つのPrefabになり、ssaeファイル内に複数のアニメーション が格納されていた場合、対応するPrefab内に複数のアニメーション再生用データが格納されます。 このデータは、「アニメーション名と同一の名称」になっていて、 最親のGameObjectは、SpriteStudio5上のルートノードのデータとなっています。 つまり、このプレハブの最親ノードはアニメーションを持ちますので、 スクリプトなどから制御しようとしても、アニメーションの再生で上書きされてしまいます。これをスクリプトやエディタ上で位置などを制御したりするために、 実用上、(様々なメッシュなどと同様に)このプレハブの親にGameObjectを別個につけてやる必要があります。
-
制御用プレハブ
「アニメーション名_Control」という名前で作成されます。
このプレハブは、ユーザーが各目的に併せて、 「位置を変更したり」
「動作スクリプトを追加したり」
「名称を変更したり」
して運用することが前提となっています。
このプレハブは非常に特殊な振舞をするプレハブのため、「制御用プレハブ」と呼称することにします。
制御用プレハブの役割と運用方法について
作成されたばかりの制御用プレハブには、下記の情報しか存在していません。
- Transform
- 結びついている「Prefab」フォルダ内のデータとのリンクを行っている
「Script_SpriteStudio_LinkPrefab.cs」
作成されたままの制御用プレハブは、ヒエラルキー上にドロップすると、自動的に、
その直下にリンクしている「Prefab」フォルダ内の実体データを展開します。
その際に、制御用プレハブとインスタンスとのリンクを自動的に切断します。
それに加えて、ランタイムで本制御用プレハブをインスタンス化した場合、
「リンクしているPrefabフォルダ内のデータを直下にインスタンス化した後に、
Script_SpriteStudio_LinkPrefab.csはスクリプトコンポーネントごと自動的に
自己消滅」します。
このノードの設置目的は、Unityのバージョンや運用状況によっては
「プレハブの中にプレハブを格納する(プレハブinプレハブ)」ことを行うと、
プレハブ内に格納されているプレハブは、元となっているプレハブとのリンクが切れてしまい、
インスタンスとのリンクは「プレハブの中のプレハブ」に対してに変更されてしまうため、
大元のデータを更新(再インポート)しても、プレハブ中のプレハブは更新の対象にならない、
という事象が起こる場合があります。
それを解決し、常に「元のプレハブとのリンクを保ったまま」運用を
行うことができるように設計されているのが、本制御用プレハブです。
本制御用プレハブについている「Script_SpriteStudio_LinkPrefab.cs」の挙動の設定は、
インスペクタで行うことができ、下記になります。
[Prefab]
リンクしている直接インポートされたSS5のデータのプレハブです。
原則、本値はみだりに変更しないで下さい。
[Auto Develop-Prefab]
本チェックがONになっている場合、エディタ上で、
- ヒエラルキーに本制御用プレハブをドロップした場合
- 配置されているヒエラルキーが再度読み込まれた時(起動時含む)
に自動的にリンクしているプレハブを展開します。
これは主に位置合わせやアニメーションのテストなどを行う時のためにあり、
インポート(時に作成した場合の)直後状態は「ON」になっています。
このチェックをOFFにすると、エディタ上でヒエラルキーに本制御用プレハブ
をドロップしても、リンクしているプレハブを自動で展開しなくなります。
これは一見「常にON」にしておいた方が良いように見えますが、
この制御用プレハブを他のプレハブの中に入れて運用するような場合、
位置合わせやテストなどが終了したら、本チェックは「OFF」にしておくこと
が望ましいです。
「ON」にしたままだと、エディタ上で実体化されたリンクされたインスタンスが
そのままプレハブ内に展開定義されますので、
先に説明している「プレハブ中のプレハブにインスタンスとのリンクが変更
されてしまう」事態が起こります。
本チェックボックスの機能はエディタ上だけで有効です。
ランタイム上では、直下にSS5のアニメーションデータの実体が
展開されていない場合、強制的に展開を行う挙動をします
(また、その直後、本スクリプトコンポーネントは自動的に消滅します)。
[Script Self-Delete]
本チェックがONになっている場合、エディタ上で
- ヒエラルキーに本制御用プレハブをドロップした場合
- 配置されているヒエラルキーが再度読み込まれた時(起動時含む)
した場合に、「Auto Develop-Prefab」で設定してある挙動を行った後、
ランタイムの時と同様、Script_LinkPrefab.csを制御用プレハブの実体から
自動消去します。
特に、「プレハブinプレハブ」での大元からのリンクの切断が起こっても
構わない場合などは、本チェックをONにして実体化すると、
Script_SpriteStudio_LinkPrefab.csのスクリプトコンポーネントが
削除された状態でインスタンス化されます。
[Develop-Prefab]
このボタンを押すと、「Auto Develop-Prefab」の設定に関係なく、
制御用プレハブのインスタンスの直下に、リンクしているプレハブを実体化します。
普段、[Auto Develop-Prefab]をOFFにしているオブジェクトの動作を確認
したい場合などに、本ボタンを押すことで、強制的に、直下にアニメーション本体
のプレハブを実体化して、各種テストや確認などを行うことができます。
[Erase Developped-Prefab]
直下にアニメーション本体のプレハブが実体化している場合、
本ボタンを押すことで、そのプレハブのインスタンスをヒエラルキー上から消す
ことができます。
特に
「大元のアニメーションデータ本体のプレハブとのリンクを保ったまま」
「制御用プレハブを別のプレハブの中に入れたい」
ような場合、[Auto Develop-Prefab]の設定に関わらず、プレハブ化する前か
もしくはプレハブにインスタンスの状態を反映させる前に、本ボタンを押して、
アニメーション本体のプレハブのインスタンスを削除してから、
「プレハブinプレハブ」の処置を行うことで、
「大元のアニメーションデータとのリンクを保ったまま、プレハブの中に
本プレハブを入れて運用すること」ができるようになります。
以上の機能設定を組み合わせて、希望の動作- 運用状況を作り出すようにしてください。
制御用プレハブの本情報群は、プレハブをインスタンス化しなくても、エディタのプロジェクト
内で直接プレハブに指定することも可能です。