こんにちわニコニコ
第2ソーシャルゲームDivの渡辺(@propeland)です
新しい技術と風邪の流行にはいち早く乗ってしまうFlashメインのDeveloperです

iOSではFlashが使えないためスマートフォンではちょっと影の薄くなった汗Flashですが
実はまだまだ使えるんです!!

今回はUnityとFlashで簡単にアニメーションを作成するアセットと使い方をご紹介しますチョキ
(Unityについてはある程度触ったことがあるという前提で進めます)

従来だと、デザインを反映させたりアニメーションを付けるのは
Textureを作って、ゲームオブジェクトを配置して・・・・と
Unityの操作に慣れていないと大変でしたが
uniSWFというAssetを使うとデザイナーさんやFLASHerさんの慣れ親しんだ
Flashで簡単にUIやアニメーションが作ってそのまま使うことができます
余計な手間はかかりません

uniSWFは2012年の6月に出たばかりの新しいAssetなのでまだまだ資料があまりありませんが
人気のNGUIよりも使いやすいのでは…と思っています

・:,。゚・:,。★゚・:,。゚・:,。☆


それでは実際にuniSWFを使ってFlashのデータをUnity上で使ってみましょう音譜

まず新しいプロジェクトを作成します
そして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も作れる♪
というあたりかと思います

スマートフォンアプリを作っている方は一度お試しください

反響があればまた応用編も書きたいので気になった方はお問い合わせお願いします(笑)