UnityのLWFでスプライトシートを使用する
先日試したUnityのLWFでスプライトシートを使用できるみたいなので試してみました。
(Wikiには項目があってちゃんと読めよという感じでした・・・)
作成手順
事前にLWFが使用可能なプロジェクトを作成しておく
1.スプライトシートを生成する
使用したもの
Adobe Flash Professional CC
Version 14.0.0.110
ライブラリ上で使用している画像をすべて選択
→右クリック→[スプライトシートを生成...]
※以下の場合は変換がうまくいきません
・ライブラリ上の名前に拡張子がついていない場合
・選択した画像がライブラリ直下にない場合
設定はこんな感じ
作成されたJSONファイルのBOMを削除する。
例:サクラエディタの場合
[ファイル]→[名前を付けて保存]→BOMのチェックを外して保存
2.パブリッシュ
FlashCC上で[コマンド]→[Publish for LWF]
パブリッシュされると画像フォルダが追加されます
3.LWFに変換
LWFS_workフォルダにeffect_sampleフォルダをそのまま入れます
(めんどくさいので手順2のファイル全て入れてしまいました)
LWFの変換バッチを実行するとファイルが生成されます。
あとはUnity側で使用するだけなのですが、そのまま実行すると
以下のエラーが発生
InvalidCastException: Cannot cast from source type to destination type.
lwf_unity_resourcecache.csの中でエラーが起きているけど
ただの型変換ができていないだけ。
ちょっと調べてみたけどUnityのバグで
フォルダ内に、拡張子が違っても、同じ名前であれば、Resources.Load()関数で認識ができなくて生じるらしい。
LWFのソース「lwf_unity_resourcecache.cs」の144行目あたりを以下のように修正して対応しました。
変更前
Texture2D texture = (Texture2D)Resources.Load(filename);
変更後
Texture2D texture = (Texture2D)Resources.Load(filename, typeof(Texture2D));
ちなみにUnityのバージョンは4.5.3でした。