本記事の概要
本記事は自分がコルーチンについてでの程度理解しているかの確認もかねて書いておりますので間違っていることがあります、もし間違いを見つけた場合コメントなどをください、修正します。
目次
コルーチン(Coroutine)とは?
コルーチンとは処理を中断したり、何秒後に処理を再開したり、中断したところから再開したりすることができ、非同期のような処理ができる関数っぽいものです。
(コルーチンはマルチスレッド見たいに感じますがシングルスレッドで動いていますしメインスレッドでの処理となります。)
Unityマニュアル
詳しく知りたい方はこちらの公式マニュアルをお読みください。
どうやって使うの?
まず必須なのがusing System.Collectionsの宣言です。
using System.Collectionsを追加することによってIEnumerator型を宣言できるようになっています。
このIEnumerator型を戻り値にして関数のように書けばコルーチンとして認識されます。
サンプルコード
IEnumerator Test()
{
yield break;
}
コルーチンはこのように記述します。
yield breakについてはあとでどのような処理なのか説明します。
どうやって呼び出すの?
この二つの方法で呼び出すことができます。
//文字列でコルーチンの名前を書く
StartCoroutine("Test");
//コルーチンを関数呼び出しのように書く
StartCoroutine(Test());
このように呼び出す方法は2種類あります、引数を持たせて呼び出したい場合は
IEnumerator Test(int num,string name)
{
yield break;
}
//コルーチンを関数呼び出しのように書く
StartCoroutine(Test(10,"名前"));
このように呼び出すことによって引数を渡すことができます。
yieldって?
メソッドの処理を一時的に中断し、処理を呼び出し元に返すことができるようにするためのものです。
yield一覧
//処理を止めて次のフレームに処理を開始する場所
yield return null;
//処理を止めて次のフレームに処理を開始する場所
yield return 0;
//ここで処理を強制的に止めます
yield break;
//処理をここで止めて引数で渡した数値秒経ったら処理をここから再開
yield return new WaitForSeconds(1f);