ご注意 - SpriteStudioArchive/SS5PlayerForUnity_v1_2_1 GitHub Wiki

Unity上で必要な設定について

  • プロジェクトのウィンドウ上で、SpriteSrtudio/Scriptのフォルダ内にある、どれか一つスクリプトを選択状態にします。
  • スクリプトのインスペクタの上の方にある「Execution Order」のボタンを押します。
  • インスペクタに「MonoManager」のインスペクタが開きますので、「+」ボタンを押して、スクリプトを順次加えて・下記の設定を行ってください。
Script_SpriteStudio_PartsRoot       : 1
Script_SpriteStudio_PartsInstance   : 2
Script_SpriteStudio_PartsNULL       : 3
Script_SpriteStudio_PartsTriangle2  : 4
Script_SpriteStudio_PartsTirangle4  : 5
Script_SpriteStudio_DrawManagerView : 6
  • 設定が終わったら「Apply」ボタンを押す

Unityの仕様として、「スクリプト」及び「シーン上の各ゲームオブジェクト」の実行順序については「親→子」の順序が保障されているわけではなく、「各スクリプトコンポーネント・各ゲームオブジェクトで、ランダム(正確にはUnity起動毎などでロードされたオブジェクト順)」となります。そのため、スクリプトの実行順序をMono(.NET Frameworks)に対して設定を行う必要があります。 Unityリファレンス:http://docs-jp.unity3d.com/Documentation/Components/class-ScriptExecution.html

ただし、アプリケーションの動作実装や仕様によっては、上記の優先順位を調整する必要が出てくる場合があります。 それは主に「Script_SpriteStudio_DrawManagerView」や「Script_SpriteStudio_PartsInstance」の実行順序が対象である場合が多く、表示などに予期しない誤動作などが起こる場合、本スクリプトの実行順位を0ないし(アプリケーションで使用している他のスクリプトより)大きな値に設定したりして、適正な動作順序になるように調整してみてください。

プロジェクトのスクリプト改行設定について

Unity上で本プレーヤーを使用している際に、「プレーヤーの使用方法やアプリケーションのスクリプト記述が間違っていない」にも関わらず、(本プレーヤーのバグ以外で)下記の要因が揃った場合にアプリケーションの表示等が誤動作する症状が起こる可能性があります。

  • アプリケーションのスクリプトで、注釈を「//」を使用して記載している。
  • アプリケーションのスクリプトで、注釈などに全角文字(漢字など)を使用している。
  • アプリケーションのスクリプトの改行コードの設定が「Microsoft Windows」以外に設定されている。

この場合に、下記の設定を行うことで、アプリケーションの誤動作を回避できる場合があります。

  • MonoDevelop上でプロジェクトのスクリプトの記載ルールの改行コードを「Microsoft Windows」に設定する。
  • その上でアプリケーションのスクリプト群を読み込み、保存しなおす(本プレーヤー及び、アセットストアなどで配布されているアセットのスクリプト等は、原則全角文字の使用が禁止されているため、恐らく保存しなおさなくても大丈夫だと思います)。
  • (これはできればの範囲ですが)全角文字を使用した注釈を「//」ではなく「/*~*/」で記載する。

※上記設定は、「アプリケーションのステップ実行や・ブレークポイントを使用している」時に、「実際に実行している処理と、MonoDevelop上で示される実行行がずれている」場合などの対処としても有効な場合があります。

また、どうしても「//」を使用して、全角文字を注釈で使用しなくてはならない場合、下記の手段でも解消できる場合もあります。

  • 注釈の末尾に「.」(半角ピリオド)を追加する

当たり判定について

インポートできるパーツの当たり判定の種類は下記になります。

  • なし
  • 四角形
  • 円形(スケール影響なし)

これ以外の当たり判定種別は「なし」と同等に扱われますのでご注意下さい。

※「四角形」「円形」は、Unity上ではtransformの影響を受けますので、transformで回転・スケールを変更すると、それらの値に影響を受けますので、ご注意下さい。

  • インスタンスパーツの当たり判定について

    SpriteStudio5上でインスタンスパーツに当たり判定を設定する事ができますが、こちらの機能は推奨しておりません。 当たり判定用のパーツを別途作成し運用してください。 SpriteStudio5上でインスタンスパーツに当たり判定を設定できないようにする予定です。

制御用プレハブの更新について

  • 制御用プレハブの名称が変更されていた場合、更新対象にはなりません。
  • 制御用プレハブの格納場所が変更されていた場合、更新対象にはなりません。
  • 制御用プレハブに他のコンポーネントなどが付いていても、それらに影響は与えません(Script_LinkPrefabの内容だけを更新します)
  • 制御用プレハブを生成しない設定(インポート時の制御用プレハブ生成のチェックが外れている場合)でも、「(SSアニメーション名)_Control.prefab」が存在した場合、更新処理をかけます。

アニメーションのラベル名について

アニメーションのラベルで「_start」「_end」の名称は特別な意味を持っています(それぞれ、アニメーションの先頭と終了フレームを意味します)。 本ラベル名をユーザーがアニメーションに対して設置してしまった場合、SS5Player for Unityでは、インポート時に警告を出して「その名称がついたフレーム位置にはラベルが付いていない」ことにしてインポートしますので、ご注意ください。

再生フレームの外部からの検知について

これはV1.0にも共通する仕様となりますが、Unityの場合、実際のプラットフォーム上でのアプリケーションの実行フレームレートが可変であるため、 Script_SpriteStudio_PartsRootクラスの再生フレーム番号などを「何かしらの同期処理」などに使用すると、「同じフレームが複数回再生」されたり「フレームがスキップしてしまう」ことが起き、誤動作などの元になるため、アニメーションとの同期処理には、できる限り「ユーザーデータ」をデータに設定し、そのコールバックを受け取る形で同期を行うことを推奨いたします。

SS5PUのユーザーデータコールバックは、LateUpdateの実行タイミングで発行されるため、
コールバック関数内では極力「次のUpdateで処理されるべき処理のためのパラメータ設定
(例えば効果音データの識別名の確定など)」にとどめ、それらの実際の処理は「次に回ってくるUpdateのタイミング」で行うことを推奨いたします。

シーンセーブ時などに出るWarningについて

一部Unityのバージョン(主に4.3以降と思われます)で、エディタ上のプレイモードを停止した後で、シーンをセーブしたりした場合などに、
「CombineInstanceの配列にnullが混じっている」
という警告がコンソールに出る場合があります。
これは描画マネージャとアニメーションオブジェクトの処理が切り離されたため、「プレイモードを終了したタイミング」によって、双方の動作状態の不整合などが原因で出てしまう警告と思われます。
実際のアプリケーション動作上では問題がないと思われますので、現状、無視していただけますようお願い致します。

また、同種の要因から、テストモード終了後に画面のアニメーションオブジェクトの表示が崩れる場合がありますが、これについてはシーンをセーブしたり・シーン中のアセット等を選択しなおすと(Unityの内部処理である程度各GameObject間の同期が取り直されるため)、 正常な表示に戻ります。
一応、アプリケーションの動作状態に障害を起こすものではありませんが、今後のバージョンアップで(可能であれば)解消しようと思っておりますので、ご理解の程お願い致します。

OPTPiX SpriteStudio上での2つの非表示方法の反映の違いについて

これはV1.0以前からの仕様ですが、インポート時の誤解などが少なくないと思われるため、記載させて頂きます。

OPTPiX SpriteStudio上でパーツを不可視状態にする方法には2種類存在し、
(1) タイムライン上のアトリビュートの「非表示」を設定する。
(2) タイムラインのパーツ名の前にある「目のアイコン」をクリックして不可視にする。

この内、(2)はOPTPiX SpriteStudio上でのデータエディット時のサポート機能となっていますので、インポート時には、この設定は無視されます。
アニメーションとして「表示しないパーツ」の場合には、(1)のタイムライン上に非表示のアトリビュートを設定して下さいますようお願い致します。
※この挙動・制限は、バグではなく、仕様となっております)

スプライトパーツの子として別のアニメーションオブジェクトをつける場合の注意点

V1.1ではインスタンスオブジェクト呼出に対応しているため、スプライトパーツの子として、別のアニメーションオブジェクトを接続する方法が2種類に増えました。

[1] Unityのシーン上で該当するパーツの子として、直接インポートしたプレハブを設置する
[2] インスタンスパーツ機能を使用する

どちらの方法も、大した違いがないように見受けられますが、仕様として下記の決定的な違いがありますので、目的に合わせて使い分けるようにしてください。

[1]の方法では、2つのアニメーションオブジェクトは、常に親子関係の影響を受けて(親に子が)追従します。
また、それぞれ「独立したアニメーションオブジェクト」として(描画マネージャに)処理されますので、「描画の順序」は「それぞれのオブジェクトのPartsRootのカメラからのZ座標(距離)」で決定されます。

一方[2]の方法では、呼び出されたインスタンスアニメーションは、呼出元のインスタンスパーツの「優先度」アトリビュートの値で描画順序が(呼出元のアニメーションに連動して)決定され、追従も呼出元のインスタンスパーツの「座標」「回転」「スケール」の影響を受けます(インスタンスパーツが何かのパーツの子として付けられていた場合、インスタンスパーツの親の「座標」「回転」「スケール」の値の影響も受けますが、「優先度」は親パーツの影響は受けません)。