Scratchでは「1秒待つ」のブロックは良く使ったと思いますが、Unityで1秒待つにはどうすればいいかを紹介します。
Unityで「1秒待つ」の処理を行うには「コルーチン」というものを使います。
コルーチンとは、一言でいうと、フレームをまたいで処理出来る関数のことです。
通常の関数は、1フレーム内で処理が完了するのに対し、コルーチンは、関数の途中で実行を停止して Unity へ制御を戻し、その次のフレームで(あるいは指定の秒数後に)停止したところから続行することができます。
ちょっと難しい感じがしますが、コード自体はシンプルなのでぜひ使ってみましょう。
Cubeの色が信号機のように、
青→(1秒待つ)→黄→(1秒待つ)→赤と変わるコードは以下になります。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeColorChanger : MonoBehaviour
{
Renderer cubeRenderer;
void Start()
{
// キューブのRendererを取得
cubeRenderer = GetComponent<Renderer>();
// Coroutine(コルーチン)を開始
StartCoroutine(Singou());
}
IEnumerator Singou()
{
cubeRenderer.material.color = Color.blue;
yield return new WaitForSeconds(1f);//1秒待つ
cubeRenderer.material.color = Color.yellow;
yield return new WaitForSeconds(1f);//1秒待つ
cubeRenderer.material.color = Color.red;
}
}
ここではSingou(信号)という名前のコルーチンを作る例で説明します。
戻り値の型を「IEnumerator」として、「Singou」という名前の関数を作ります。これがコルーチンとなります。
この関数内で1秒待たせたいところに、「yield return new WaitForSeconds(1f);」と書きます。1.5秒待たせたければ、1.5fにします。
このコルーチンを実行するために、「StartCoroutine(Singou());」が必要です。StartCoroutineメソッドの引数にコルーチンを指定しています。