これはなに?
https://github.com/SpriteStudio3rdParty/Ss5ConverterForUnity2D
で公開されている、SpriteStudioのデータをuGUIに変換するスクリプトが素の状態だと
- 問題1:Unity5.2/5.3で動かない
- 問題2:手動作業大杉
- 問題3:プロジェクトのAssetsを汚染する
と色々問題があって使えなかったので、いい感じに使えるようにしたメモ
問題1:Unity5.2/5.3で動かない
- Animator周りの変更とEditor側のAPIが大きく変更してるので直す。
- Animator周りは移行先APIがなかったりするのがあり、ちょっと調べないとダメ。
- そのうち直したやつをブランチでGithubに投げます。
- Animator周りは移行先APIがなかったりするのがあり、ちょっと調べないとダメ。
問題2:手動作業大杉、問題3:プロジェクトのAssetsを汚染する
そもそものフロー
- sspj/ssae をプロジェクトにAssetとして配置する
- 右クリックでコンバートを選択
- コンバート後に、別途AnimationControllerを作成
- AnimationControllerに、コンバートで追加されたAnimationを登録
- Animation遷移を適宜設定
- AnimationControllerをコンバートで生成されたPrefabに設定
- Prefabをヒエラルキーに追加
やってられるか!
改善後のフロー
- sspjをドラッグ&ドロップで、必要なPrefab,Material...etcのみがプロジェクトに追加される。
どうやっているのか?
基本的なアプローチは
- オリジナルの拡張をbatchモードで呼べるように改造した上で、別プロジェクトにセットアップ。
- メインプロジェクトからサブプロジェクトをバッチモードで呼び出して必要な成果物をメイン側にコピー
追加した処理とかなんか色々は下記の通り
- Assets/Work/ 以下に、指定した sspj/ssae をコピー
- batchモードでコンバート
- さらにbatchモードで
- AnimationControllerをUnity2D/{sspj名}/ に生成
- animを取得して紐付け
- Prefabを取得して、AnimationContollerを設定
- batchのPostProcessで、 Unity2D/{sspj名}/ を共有フォルダにコピー
- Work, Unity2Dフォルダをクリア
- メインのプロジェクトからは、共有フォルダを参照して、ディレクトリ指定でコピーしてAssetReloadするエディタ拡張を作っておく。 > 共有ディレクトリを、プロジェクト直下に作っておくと吉か。
- とりあえず、めんどいのでMakefile拡張で処理した
- この時の注意として、更新時にヒエラルキーのPrefabが死ぬ。
- いろいろ弊害はあるが、更新時には、AnimationController/Prefabは上書きしないように。
- ディレクトリを切っているので、rsyncが差分は放置してくれるし手っ取り早い。更新時はexcludeで除外すればよい。
- この時の注意として、更新時にヒエラルキーのPrefabが死ぬ。
- とりあえず、めんどいのでMakefile拡張で処理した
TODO: Animationの遷移の自動化
その他
- Canvasに配置するが、Overlayだとスケールがおかしいことになる。(SpriteStudioではよくあること。。
- ScreenSpace Camera に設定して、Canvas 描画用のカメラを設定するとよい。
- うちはこのあたり変なことをやってるけど...
- ScreenSpace Camera に設定して、Canvas 描画用のカメラを設定するとよい。
- そもそもCanvas配下におかないてでいいのでは?
- スケールがめんどくさくなるので、Canvas配下への設置奨励
- 重ね順は優先度ののプロパティで決まるので、確実に設定する事。(Default - 0 なので確実に設定しないとUIと被る
- UIのLayer設計によっては、変換する段階で別のレイヤー参照させておいた方がいいかも
- SpriteStudioより上にUI被せたい
- CanvasのLayerをより上位のLayerに指定してやるのが無難。