「Unity LWF内のインスタンスを取得する」の版間の差分

提供: LWF Wiki
移動: 案内検索
(ページの作成:「==ツリー構築が終わってから取得する== Load()を行った直後はまだLWFアニメーションのツリー構築が終わっていないため<br/> イン...」)
 
1行: 1行:
 
==ツリー構築が終わってから取得する==
 
==ツリー構築が終わってから取得する==
 
Load()を行った直後はまだLWFアニメーションのツリー構築が終わっていないため<br/>
 
Load()を行った直後はまだLWFアニメーションのツリー構築が終わっていないため<br/>
インスタンスの取得をすることができません。<br/>
+
rootに置かれているインスタンスの取得をすることができません。<br/>
 +
※rootの参照は可能です。<br/>
 
<br/>
 
<br/>
 
rootにcharaというインスタンス名のムービークリップが置いてあると仮定します。<br/>
 
rootにcharaというインスタンス名のムービークリップが置いてあると仮定します。<br/>
16行: 17行:
 
  });
 
  });
 
こうすることでcharaインスタンスを参照して制御することができるようになります。<br/>
 
こうすることでcharaインスタンスを参照して制御することができるようになります。<br/>
<br/>
+
LoadCallbackの時点でrootMovieは参照可能となり、postLoadの時点でrootMovieに配置されているインスタンスを参照可能になります。<br/>
Loadの引数にもlwfLoadCallbackというものがあるのでこちらを利用しても構いません。<br/>
+

2014年9月30日 (火) 21:39時点における版

ツリー構築が終わってから取得する

Load()を行った直後はまだLWFアニメーションのツリー構築が終わっていないため
rootに置かれているインスタンスの取得をすることができません。
※rootの参照は可能です。

rootにcharaというインスタンス名のムービークリップが置いてあると仮定します。
下記のように書くと取れるのですがLoad直後ではNullが返ってきます。

//Nullが帰ってくる
Debug.Log(lwf.rootMovie["chara"]);


なのでLoad完了のCallbackを待った後、構築完了時に発行されるpostLoadイベントを受け取ってから参照するようにします。
Start()に下記のコードを追加します。

AddLoadCallback (delegate(LWFObject obj) {
    lwf.rootMovie.AddEventHandler("postLoad", delegate(LWF.Movie movie) {
        Debug.Log (lwf.rootMovie["chara"]);
    });
});

こうすることでcharaインスタンスを参照して制御することができるようになります。
LoadCallbackの時点でrootMovieは参照可能となり、postLoadの時点でrootMovieに配置されているインスタンスを参照可能になります。