InvokeRepeatingを使って、何秒かおきにくり返す処理を、ある条件でストップできるようにしましょう。
今回の例では、0.5秒おきに出てくるボールを、3秒経過すれば生成を止めるように、スクリプトを作成します。
CancelInvokeを使った停止処理
Sphereを作成し、リジッドボディを追加。
プロジェクトビューにドラッグ&ドロップし、プレハブ化します。
Sphereの元データは削除しておきます。
空のオブジェクトを作成。
BallDrop.csを作成し、GameObject(空のオブジェクト)に追加します。
BallDrop.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallDrop : MonoBehaviour { public GameObject ball; float time; void Start() { InvokeRepeating("BallSpawn", 0, 0.5f); time = 3.0f; } void BallSpawn() { Instantiate(ball, new Vector3(0, 3.0f, 0), Quaternion.identity); } void Update() { time -= Time.deltaTime; if(time < 0) { CancelInvoke("BallSpawn"); } } } |
Ballのフィールドに、Sphereオブジェクトを入れます。
ゲームプレイしてみましょう。
0.5秒おきに落ちていくボールが、3秒後に出てこなくなります。
InvokeRepeatingを使用すれば、「スタートから何秒後に、何秒おきに実行」を設定できます。
この実行処理は、CancelInvokeによって、停止することができます。