2012年1月10日火曜日

コルーチン(Coroutin)について

コルーチンをUpdateから呼ぶときに、ちょっと調べたのでメモ
コルーチンのウィキペディア

シューティングの弾などで一定時間経ったら自動消滅させる手法で、まず変数でタイマーを使うのが思いつくのですが、そういえばWaitForSecondsとかのコルーチンがあったなぁと思いだして、これを使ってみることにしました

追記
Destroyメソッドが第二引数に時間を指定できるので、Destroy(gameObject, 3.0f)をStartメソッドで呼んでおくのが一番スマートですね

最初のコード
void Update(){
 Kill();
}

IEnumrator Kill(){
yield return new WaitForSeconds(3.0f);
Destroy(gameObject);
}

実行すると、Killが実行されていない・・・
どうやらUpdateからコルーチンを呼ぶときには
StartCoroutin("Kill");
なんてものを使わないといけないらしい

void Update(){
  CoUpdate();
}
void CoUpdate(){
 StartCoroutin("Kill");
}
IEnumrator Kill(){
  yield return new WaitForSeconds(3.0f);
  Destroy(gameObject);
}

で3.0秒後に消滅してくれるようにできました

コルーチンの仕組みはもっと調べておきましょう・・・


0 件のコメント:

コメントを投稿

このガジェットでエラーが発生しました