#はじめに
ここでは技術的な部分で初心者の方向けになんとなくわかっていただけるように書いています。
#コルーチンとは
コルーチンって何?
っていう方向けに言葉の意味をなんとなく理解してもらえるようこちらで説明しています。
主にポイントは↓のこの3つになります。
①IEnumerator
②yield
③StartCoroutine
まずこの下にあるスクリプトを見てください。
これからこのスクリプトを元に順番に説明していきます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Tesycoltin : MonoBehaviour
{
void Start()
{
StartCoroutine("Coroutine1");
}
IEnumerator Coroutine1()
{
Debug.Log("開始");
yield return new WaitForSeconds(3);
Debug.Log("3秒経過");
yield return new WaitForSeconds(5);
Debug.Log("5秒経過");
}
void Update()
{
}
}
ちなみにこのスクリプトの実行結果はコンソールに実行した瞬間に「開始」と表示され、3秒たったら「3秒経過」、5秒たったら「5秒経過」と表示された。
###①IEnumerator
IEnumerator 「関数の名前」()
{
「処理の内容」
}
はじめにIEnumerator型の関数を作成する。
「IEnumerator」と書いた後、次に自分で好きな名前の関数を書く。
私が用意したスクリプトでは「Coroutine1」としてある。
そして関数の中にコルーチンの処理の内容を書いていく。
###②yield
①で関数を作成したら次ははその中の処理の内容を書いていく。
書き方として始めに「yield」を付けその次にどういう処理の仕方しにするか書いていく。
私の用意したスクリプトは
Debug.Log("開始");
yield return new WaitForSeconds(3);
Debug.Log("3秒経過");
yield return new WaitForSeconds(5);
Debug.Log("5秒経過");
上から順番に実行されていくので、言葉で説明すると
始めにコンソールに「開始」と表示。
次に
「yield return new WaitForSeconds(3);」
これは3秒待って再会という事なので文字通り3秒たって次は下にある「3秒経過」をコンソールに表示する。
下にあるやつも5秒後にコンソールに「5秒経過」と表示されるようになってる。
ここで注意したいのが
「yield return new WaitForSeconds(3);」
の後に
「yield return new WaitForSeconds(5);」
が書いてありますが、
3秒待って再開したその後にまた5秒待つわけではなく、最初に実行してから3秒後、最初に実行してから5秒後だという事。
そして他にも
・1フレーム待機させる 「yield return null;」
・コルーチンを停止・破棄する「yield break;」
などもあるがここではなんとなく使い方を感じてくれればいいと思ってるので深くは書かないです。
###③StartCoroutine
最後にこのようにStartメソッドの中に「StartCoroutine」とカッコの中に先ほど作った関数の名前を入れれば無事実行されます。
void Start()
{
StartCoroutine("関数名");
}
終わり。