読者です 読者をやめる 読者になる 読者になる

万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

C#Unity IEnumerator

Currentとは

Unity3D - Unity のコルーチンで結果を受け取る - Qiita

StartCoroutineで呼ばれているIEnumeratorメソッド内ではCurrentを返さないとダメらしい。

こちらも参考

Unity入門/コルーチンの待機 - WisdomSoft

あとは、関係ないがvoidを返す普通のメソッドでの実験

実験その1

 void TestMethod()
    {
        // do something
        IEnumerator co = ienu();
        while(co.MoveNext())
        {
        }
    }

    IEnumerator ienu()
    {
        yield return null;
        Debug.Log(1);
        yield return "HOGE";
        Debug.Log(2);
        yield return null;
        Debug.Log(3);
        yield break;
    }

voidのメソッドから単にIEnumeratorのメソッドを呼ぶにはこれでOK。

1
2
3

が出力される。

実験その2

 void TestMethod()
    {
        // do something
        IEnumerator co = ienu();
        while(co.MoveNext())
        {
            Debug.Log(co.Current);
        }
    }

    IEnumerator ienu()
    {
        yield return null;
        yield return "HOGE";
        yield return null;
        yield break;
    }

CurrentをDebugすると、Logメソッドでstring変換されたものが返却される。

Null
HOGE
Null

yield return null;をしたからといって中断されるわけではない。