private IEnumerator YieldUpdate() { while (m_current != null && m_current.status != Status.Failure && m_current.status != Status.Error) { m_current.OnTick(); switch (m_current.status) { case Status.Ready: break; case Status.Success: m_current = Next(); break; case Status.Failure: m_status = Status.Failure; break; case Status.Error: m_status = Status.Error; break; case Status.Running: m_status = Status.Running; break; } yield return(new WaitForEndOfFrame()); } m_status = Status.Success; }