Unityの学習用の本で

次のコードがあり、わかりませんでしたので、

調べました。

 

    IEnumerator RecoverCandy()
    {
        counter = RecoverySecond;

        // 1秒ずつカウントを進める
        while (counter > 0)
        {
            yield return new WaitForSeconds(1.0f);
            counter--;
        }

        candy++;
    }

 

完全に理解できたわけではありませんが、

yield return まで処理実行され、

一度呼び出し側に処理が戻り、

呼び出し側の処理が終わったのち、

その後、yield returnの次の文から実行される。

という流れのようです。

 

シングルスレッドなので、処理を止めずに時間の経過を確認するには、

このような処理が必要なのだと思います。

この関数はコルーチンで実行するもののようです。

 

C#についてはほとんど学習していないので難しいです。

UnityのスクリプトはC#なのでMicrosoft Learnで確認しながら

使えるようになりたいです。