別クラスのメソッドを使う時と、自分のクラス内のメソッドを使う時でyieldの挙動がへん。
Hogeクラスの中のHogeMethodメソッドを呼ぶときは呼ばれるのに、外部のExternalHogeクラスのHogeMethodメソッドが呼ばれない
Hogeクラス内
class Hoge extends MonoBehaviour { public function HogeMethod() { Debug.Log("--1"); var www : WWW = new WWW("http://google.com"); yield www; } function Start() { yield HogeMethod(); var externalHoge:ExternalHoge = new ExternalHoge(); yield externalHoge.HogeMethod(); Debug.Log("--3"); // do something } }
ExternalHogeクラス内
class ExternalHoge { public function HogeMethod() { Debug.Log("--external hoge"); var www : WWW = new WWW("http://google.com"); yield www; Debug.Log("--2end"); } }
「yield externalHoge.HogeMethod();」から
下のように呼び出しを書き換えるといけた。
StartCoroutine(externalHoge.HogeMethod());
しかしながら、
--1 --3 --2end
のように順番にならない・・。
だからといってExternalHogeクラスのHogeMethod()メソッドのWWWのyieldをあきらめるのもだめだ。nullが返るので。
さらに
yield Coroutine(externalHoge.HogeMethod());にする