ある処理をする ➡︎ 少し待つ ➡︎ 別の処理をする
ということをしたいときに使える、coroutineについて書きます。
coroutineとは
まずcoroutineとはなにか。
これは何か英単語かと思って調べましたが違いました。プログラミングの文脈でのみ使われる単語のようです。
C#やC++など、C言語系で使われます。
このcoroutineとは関数で、これを使うと、フレームを跨いで処理を行うことができます。
実際に例をあげてみてみます。
C#:qiita.cs
void Start(){
Increase();
}
private void Increase(){
for(int i = 1; i <= 10; i++){
Debug.Log(i);
}
}
例えば、このようなコードを実行した場合、
Debugされるi
は一瞬で増加していきます。
このi
が、1秒に1ずつ増加していくようにしたい時、coroutineを使います。
C#:qiita.cs
void Start(){
StartCoroutine("Increase");
}
private IEnumerator Increase(){
for(int i = 1; i <= 10; i++){
Debug.Log(i);
yield return new WaitForSeconds (1.0f);
}
}
このようにすることで、iが1増えるごとに処理を1秒待つことができます。
Unityの公式によるUnityマニュアルでコルーチンについての記述のある部分はこちら。