Unity LWF内のインスタンスを取得する
ムービークリップを取得する
ムービークリップを取得するには
<LWF.Movieインスタンス>.SearchMovieInstance(arg1,arg2);
- arg1 : string "インスタンス名"
- arg2 : bool "自身の子以外のインスタンスを検索対象にするか"
または
<LWF.Movieインスタンス>["インスタンス名"];
※<LWF.Movieインスタンス>.SearchMovieInstance("インスタンス名", false); と同義
を使用します。
しかし、Load()を行った直後はまだLWFの構築が終わっていないため、rootに置かれているインスタンスを取得をすることができません。
なので、構築完了を待ってから取得する必要があります。
※rootの参照は構築前でも可能です。
【サンプル】
rootにcharaというインスタンス名のムービークリップが置いてあると仮定します。
下記の例だと構築が完了していないためLogにはNullが返ってきます。
//ダメな例 (Load処理) Debug.Log(lwf.rootMovie["chara"]);
なので、構築完了時に発行されるpostLoadイベントを受け取ってから参照するようにします。
//良い例
(Load処理)
lwf.rootMovie.AddEventHandler("postLoad", delegate(LWF.Movie movie) {
Debug.Log (lwf.rootMovie["chara"]);
});
こうすることでcharaインスタンスを参照して制御することができるようになります。
ボタンを取得する
ボタンを取得するには
<LWF.Movieインスタンス>.SearchButtonInstance(arg1,arg2);
- arg1 : string "インスタンス名"
- arg2 : bool "自身の子以外のインスタンスを検索対象にするか"
を使用します。
【サンプル】
rootにbuttonというインスタンス名のボタンが置いてあると仮定します。
ムービークリップ同様、構築が完了していないとLogにはNullが返ってきます。
(Load処理)
Debug.Log(lwf.rootMovie.SearchButtonInstance("button", false));
なので、構築完了時に発行されるpostLoadイベントを受け取ってから参照するようにします。
(Load処理)
lwf.rootMovie.AddEventHandler("postLoad", delegate(LWF.Movie movie) {
Debug.Log(lwf.rootMovie.SearchButtonInstance("button", false));
});
gotoAndPlayでジャンプするフレームに置いてあるインスタンスを取得する
GotoAndPlay()などでジャンプした先にいかないと存在しないインスタンスはGotoAndPlay()の直後に
取得しようとしてもNullが返ってきてしまいます。
rootの"attack"というラベルに存在する"sword"というインスタンス名のムービークリップをすると仮定します。
下記のコードだとインスタンスを取得することはできません。
lwf.rootMovie.GotoAndStop("attack");
Debug.Log(lwf.rootMovie["sword"]);
この場合、ジャンプしてその先の構築が行われるまで待つ必要があります。
下記がサンプルになります。
lwf.rootMovie.GotoAndStop ("attack");
lwf.rootMovie.AddEventHandler("render", delegate(LWF.Movie movie) {
lwf.rootMovie.ClearEventHandler("render");
Debug.Log (lwf.rootMovie["sword"]);
});
または下記のように設定してください
lwf.rootMovie.GotoAndStop("attack");
var eventId = lwf.AddMovieEventHandler("_root.char.sword", postLoad: (movie) => {
lwf.RemoveMovieEventHandler("_root.sword", eventId);
Debug.Log (movie);
});