投稿日:2019-01-12 Sat
去年のUnityのAssetStore半額セールで買った「Flash Animation Toolset」C#でgotoAndPlayやStopも出来るしマスクも使える、期待通りの優れものAssetでしたので紹介したいと思います。
これは使えそう!!ただ日本では情報が少ない(マニュアルの英語ページもわかりやすいのですけど、やっぱり敷居がありますよね・・)
サンプルに使うAnimateファイル(FlashProファイル)は、ボーンを使ったFlashアニメ
ボーン素材なのでパーツが分解されている。

それをボーンを使ってタイムラインを起こしてあります。

素材は、クリエータ「りんこ」さんにに作成して頂きました。
こういう動きをします。こういうのをすぐ作っちゃうのはクリエータさんって凄いですよね・・・
[広告] VPS
さて本題、これを「Flash Animation Toolset」を使ってUnityに取り込んでみます。
当然ですが、「Flash Animation Toolset」をUnityにインポートする必要があります。自分は購入しましたが無料の試用版もあります。
Flashファイルは、Assetフォルダ以下の適当なところに置きます。今回はAssets/Scenesに置きました。

まず、Unityで使うアニメは、ルートシーンのタイムラインではなく、ムービークリップ単位になってる必要があります。
そして、このムービークリップにリンケージをつけます。今回は「test_anime」とリンケージをつけました。
後でラベル名で、gotoAndPlayやStopで制御したい場合は、ムービークリップのタイムラインにラベル名をつけておきましょう。

次にAnimate上の「コマンド」メニューから「コマンドの実行」を行います。

コマンドファイルを聞いてきますので、Unityにインポートされてるコマンドファイルを指定してあげましょう。
「Flash Animation Toolset」を普通にインポートしていれば
Asset/FlashTools/FlashExport/FlashExport.jsfl がコマンドファイルになります。
コマンドの実行が終了するとFlaファイルの隣に「Flaファイル名_export」フォルダが出来上がり、中にUnity用のファイルが出来上がります。

フォルダの中には、Unity用のムービークリップアニメファイルがあります。

出来上がったファイルの中のPrefabファイル(青い立方体マーク)をHierarchyに投げ込みましょう。

見事にムービークリップがUnityに・・・

再生すると、ちゃんと動きます。
ついでに、ちょっとC#で制御してみましょう。
以下のような「SwfTest.cs」を作ります。
MainカメラなりCreateEmptyなりを実行して作るかなりで、「SwfTest.cs」を適当なGameObjectにはりつけます。
public SwfClip SwfClip;
public SwfClipController SwfClipController;
は、Hierarchyから先程投げ込んだPrefabを登録します。

実行すると、C#から制御できるのが確認できます。
※追記2019年1月20日
Unity2018.3で動かないという事なので調べてみました。
自分はUnityのEditorはJetBrainのRiderを使っているのですが、
Assets/FlashTools/Scripts\Editor/FTEditorフォルダの中のSwfEditorUtils.csの217行目のZlibStreamメソッドの第3引数の指定の所が赤くなっている・・・・

調べてみると、
Assets/FlashTools/Plugins\Editorフォルダの中のIonic.Zip.Unity.dllファイルからCompressionLevelプロパティの値をとりそこなってるように見える。。。Ionic.Zip.Unity.dllがうまく読み込めていないって事なんでしょうか
ZlibStreamメソッドの第3引数はなんだろうとしらべたら、ブーリアン値だったので、とりあえずtrue入れてみました。

そしたら動いた。問題ないように見えるけどfalseにしたらどうなるんだろう・・・・
超優秀なAssetですし、そのうち修正されると思いますが、とりあえずこれで対処・・・・
UniSwfとかは、無理やりFlashを使ってる感があったし、結局あまり使わなかったのですが、こちらは自然とUnityのプレファブとして使える感があって抵抗がない。。。 のでいいんですよね。
△ PAGE UP