目次
GAFとは
GAFとはFlashで作成したswfをUnity、cocos2d-x、starlingなどで使用することを可能にするフォーマットです。
Flashの知識はあるけど、Unityのパーティクルの知識がないので、エフェクトはFlashで作りたい・・・という方々にはオススメです。
FREE版もありますが、今回はUnityのアセットストアよりGAF pro(Flash To Unity)を購入し、使用してみたいと思います。
値段
使用方法
swfファイルの作成
元となるswfファイルを用意します。
swfの作成方法は割愛させていただきます。
変換
GAF pro(Flash To Unity)をUnityプロジェクトにImportすると、UnityエディターのメニューにGAFというタブが追加されます。
すると、GAFのConverterウィンドウが表示されます。
用意したswfファイルをドラッグ、もしくは直接ファイルを選択します。
次にGAFの保存先を指定します。
ここではGAF_Outputというフォルダを作って、その中に保存しています。
これでGAFを変換する準備が出来ましたので、CONVERTボタンを押します。
変換が成功すると指定したフォルダに上記のような形でGAFのファイルが生成されます。
ただし、この状態ではPrefabが生成されていませんので、Prefabを生成します。
やり方は、GAF ConverterウィンドウのCREATE PREFABボタンを押します。
Resources Locationの変更
生成された.assetファイルを選択すると、Resources LocationがデフォルトだとGAF/Resources/Cache/になっているので、こちらのパスを同じ階層(Assets/GAF_Output)に変更します。
変更した後に、Rebuild GAF Resourcesのボタンを押すと、同じ階層に[フォルダ名]~というファイルが作成されます。
※Rebuild GAF Resourcesのボタンを押さなくても、Resource locationを変更した際に自動的に作成されている場合もあります。
GAFResoureceLoaderを作成する
自前のResourceLoaderを作成します。
※クラス名は好きにして問題ありません。
1 2 3 4 5 6 7 8 9 10 |
using GAFInternal.Assets; using UnityEngine; public class GAFResoureceLoader : MonoBehaviour { public GAFTexturesResourceInternal textureInternalResource; public GAFTexturesResourceInternal getResource(string path) { return textureInternalResource; } } |
PrefabにGAFResoureceLoaderをアタッチ
CREATE PREFABボタンを押して生成されたPrefabに対し、上記で作成したGAFResoureceLoaderをアタッチします。
外部公開しているプロパティ「textureInternalResource(GAFTexturesResourceInternal)」にRebuild GAF Resourcesで生成された[フォルダ名]~を設定します。
PrefabのResouce managementの設定
Resouce managementのTargetに上記で設定したGAFResoureceLoaderをアタッチします。
するとMedhodを選べるようになりますので、script内のpublicメソッドであるgetResourceを選択します。
(任意)加算設定
こちらは設定するかしないかは自由ですが参考までに。
加算をしたい場合は、マテリアルを選択し、ShaderをMobile→Particles→Additiveに設定します。
再生
これでGAFの設定は一通り終わったので、後は再生するだけです。
再生の方法はscriptから指定する場合や、あらかじめSceneに配置する場合など、自分が好きなように再生してみてください。
Prefabのインスタンス化と同時にGAFも再生したい場合はPrefabのSettingsで、「Play automatically」にチェックを入れておくことで、自動的に再生されます。
まとめ
使い方は慣れるとそこまでムズカシイものではないと思います。
Flashで作ったリソースを無駄にせずにUnityに取り込みたいという方は是非使ってみる価値はあると思います。
ただ、実際に運用していく中で色々と問題が起こったりもしました。
そちらについては別の機会に記事にまとめてみようと思います。