[Unity] オブジェクトを点滅させるスクリプト(コルーチン版)
以前こちら記事でGameObjectを点滅させるスクリプトについて紹介しました。
これはタイマーとUpdateメソッドを用いて点滅制御する方法でしたが、今回はコルーチンを用いた実現方法についてご紹介します。
コルーチンの利用の仕方によってはスクリプトが非常に簡潔になります。
以下、点滅のスクリプトです。
Blinker.cs
using UnityEngine; using System.Collections; // オブジェクトを点滅させるクラス public class Blinker : MonoBehaviour { public float interval = 1.0f; // 点滅周期 // 点滅コルーチンを開始する void Start() { StartCoroutine("Blink"); } // 点滅コルーチン IEnumerator Blink() { while ( true ) { renderer.enabled = !renderer.enabled; yield return new WaitForSeconds(interval); } } }
スクリプトの量自体は前回の記事と大差ないですが、タイマーの作業用変数とUpdate内での処理が省かれています。
その代わりにBlinkというコルーチンが加わっています。
コルーチンの中では無限ループを回してrendererをトグルさせた後にyield~で一定時間待機させています。
yield return~を記述するとここで一旦関数の処理を終了し、また呼び出すべきタイミングになったときにここから処理が開始されます。
今回の例ではinterval秒経過したら以降の処理を再開します。
コルーチンとWaitForSecondsを組み合わせることでアニメーション等の動作を簡潔に実装できるのでお勧めです。