万年素人からHackerへの道

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

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    C#Unity IEnumerator

    Currentとは

    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;をしたからといって中断されるわけではない。