【Unity】StartCoroutineを使わずコルーチンを回す

DEVELOP, Unity

using UnityEngine;
using System.Collections;
 
public class TestCoroutine : MonoBehaviour
{
    private IEnumerator m_Enumerator;
  
    void Start ()
    {
        m_Enumerator = CustomProcess();
    }
  
    IEnumerator CustomProcess()
    {
        Debug.Log("wait");
        yield return null;
  
        Debug.Log("Complete!!!");
        yield break;
    }
  
    void Update ()
    {
        if( m_Enumerator != null )
        {
            // 次のフレームへ進めている。
            bool result = m_Enumerator.MoveNext();
            if (result)
            {
                Debug.Log("Next.");
            }
            else
            {
                // コルーチン終了。
                Debug.Log("End.");
                m_Enumerator = null;
            }
        }        
    }
}

MoveNext を呼ばなければ一時停止扱いにでも出来るため、独自にカスタマイズが可能となります。

Posted by kazupon