![ニコニコ](https://stat.ameba.jp/blog/ucs/img/char/char2/139.gif)
第2ソーシャルゲームDivの渡辺(@propeland)です
新しい技術と風邪の流行にはいち早く乗ってしまうFlashメインのDeveloperです
iOSではFlashが使えないためスマートフォンではちょっと影の薄くなった
![汗](https://stat.ameba.jp/blog/ucs/img/char/char2/028.gif)
実はまだまだ使えるんです
![!!](https://stat.ameba.jp/blog/ucs/img/char/char2/176.gif)
今回はUnityとFlashで簡単にアニメーションを作成するアセットと使い方をご紹介します
![チョキ](https://stat.ameba.jp/blog/ucs/img/char/char2/105.gif)
(Unityについてはある程度触ったことがあるという前提で進めます)
従来だと、デザインを反映させたりアニメーションを付けるのは
Textureを作って、ゲームオブジェクトを配置して・・・・と
Unityの操作に慣れていないと大変でしたが
uniSWFというAssetを使うとデザイナーさんやFLASHerさんの慣れ親しんだ
Flashで簡単にUIやアニメーションが作ってそのまま使うことができます
![](https://stat100.ameba.jp/blog/ucs/img/char/char2/035.gif)
余計な手間はかかりません
![](https://stat100.ameba.jp/blog/ucs/img/char/char2/187.gif)
uniSWFは2012年の6月に出たばかりの新しいAssetなのでまだまだ資料があまりありませんが
人気のNGUIよりも使いやすいのでは…と思っています
・:,。゚・:,。★゚・:,。゚・:,。☆
それでは実際にuniSWFを使ってFlashのデータをUnity上で使ってみましょう
![音譜](https://stat.ameba.jp/blog/ucs/img/char/char2/038.gif)
まず新しいプロジェクトを作成します
そしてAssetStoreからuniSWFをダウンロード&importします
サンプルは特に必要なければimportから外してかまいません
importが終わるとProjectウィンドウにuniSWFのインストーラーが登場します
ダブルクリックでインストールするとuniSWF converterというAIRアプリが立ち上がります
(AIRのバージョンが古いとAIRのインストールが促されます)
uniSWFのインストールはこれで完了です!
ComponentメニューにuniSWFが追加されます
次にカメラの準備をします
Hierarchyウィンドウにデフォルトで配置されているMain Camera
このMain Cameraを選んだ状態で
Component->uniSWF->MovieClipOverlayCameraBehaviour
を選択してコンポーネントを追加します
コンポーネントを追加したCameraのProjectionの設定をorthographicに変更します
これでUnity側の設定は終了です
再生するFlashの準備をします
簡単なアニメーションをつけたMovieClipを用意します
このMovieClipにリンケージを設定します
uniSWFではリンケージ名を使って読み込みを行うため、
使いたいMovieClipの最上層に必ずリンケージを設定します
ここでは「mc_root」という名前をつけています
(ネストしたMovieClipは自動的に読み込まれます)
プロジェクトのAssetフォルダの中にswfというフォルダ(名前は任意です)を作って
そこにFlashを保存してパブリッシュします
Flashの名前はAnimation.swfにしました
Flashの準備はこれで終わりです
ではUnityに戻りましょう
新しいswfが作成されるとuniSWF converterがExportするか聞いてきます
Exportボタンを押すと自動的にResourceフォルダの中にswf情報が作成されます
Flashを再生するために簡単なスクリプトファイルを作成します
スクリプトファイルを開いて次のようなスクリプトを書きます
using UnityEngine;
using pumpkin.display;
public class ClassName:MonoBehaviour
{
void Start ()
{
Stage stage = MovieClipOverlayCameraBehaviour.instance.stage;
MovieClip rootMc = new MovieClip("swf/Animation.swf:mc_root");
stage.addChild(rootMc);
}
}
このスクリプトを保存してMain Cameraにドラッグして関連付けます
さっそくUnityの再生ボタンを押します
プレビュー画面にFlashで作成したアニメーションが再現されます
ものすごーく簡単です!
ではスクリプトを1行ずつ説明していきます
using pumpkin.display;
これはMovieClipを表示/操作するためのパッケージです
MovieClipクラスが含まれています
MovieClipの操作にはFlashと同じように
gotoAndStop("label")やplay("label")といったタイムライン関数が使えます
Stage stage = MovieClipOverlayCameraBehaviour.instance.stage;
Stageはシングルトンのためnewで作成せずこのように参照します
このStageはFlashのStageと同じ意味です
MovieClip rootMc = new MovieClip("swf/Animation.swf:mc_root");
ここでMovieClipを参照しています
引数にはAsset以下のswfのパス:リンケージ名を指定します
この記述でメモリ上にMovieClipがロードされます
まだ画面上には表示されません
stage.addChild(rootMc);
DisplayContainerへの登録です
ここではステージに追加していますが
すでにステージに登録されているMovieClipに対しても登録ができます
今回のサンプルではMovieClipの再生だけを紹介しましたが
それ以外にもイベントリスナの登録、フレームスクリプトの追加、
入力フォームの作成、などたくさんの機能があります
…が1記事ではおさまりませんでした
詳しい使い方などTwitter等で気軽に聞いてください
最後にuniSWFを使うことのメリットについてですが
・スクリプトが簡単!特にFlashを使ってきた人には分かりやすい!
・デザイナーの作ったUIをそのまま反映させることができる
・Textureの作成などを意識しなくてすむ
・アニメーションをFlashで作るので楽&作り方が簡単
・UIの変更があってもswfを更新するだけでOK
・使いまわしたMovieClipはDraw回数が増えないのでメモリにも優しい
・いままでのFlashの素材を使いまわせる
・出たばかりで絶賛アップデート中なので意見をどんどん聞いてくれる!
・1個のFlashデータでAndroidもiOSも作れる♪
というあたりかと思います
スマートフォンアプリを作っている方は一度お試しください
反響があればまた応用編も書きたいので気になった方はお問い合わせお願いします(笑)