Unity Tutorial Beginner Space Shooter chapter 13 で学んだ事
プログラムの実行を中断して、任意のタイミングで再開する方法として yieldを使う。
yieldを書ける場所としては
ことが条件である。
チュートリアルでは、最初の待ち時間、各オブジェクトの生成interval, waveのintervalをつけるため
下記のようにyieldを3回用いた。
public GameObject hazard; public Vector3 spawnValues; public int hazardCount; public int startWait; public int spawnWait; public int waveWait; void Start() { StartCoroutine(SpawnWaves()); } IEnumerator SpawnWaves() { yield return new WaitForSeconds(startWait); while (true) { for (int i = 0; i < hazardCount; i++) { Vector3 spawnPosition = new Vector3(Random.Range(-spawnValues.x, spawnValues.x), spawnValues.y, spawnValues.z); Quaternion spawnRotation = Quaternion.identity; Instantiate(hazard, spawnPosition, spawnRotation); yield return new WaitForSeconds(spawnWait); } yield return new WaitForSeconds(waveWait); } }
参考URL
Unity - コルーチンとyield
http://www40.atwiki.jp/spellbound/pages/1363.html
爆発effectなどのオブジェクトがずっと生存するのを避けるため、Destroyに引数を与えるとその時間後にDestroyしてくれる。
public float lifetime; void Start() { Destroy(gameObject, lifetime); }
Object.Destroy
http://docs.unity3d.com/Documentation/ScriptReference/Object.Destroy.html