Unity の MonoBehaviour と Coroutine
やってみて当たり前だと気づいたのですが、StartCoroutine を使うには、MonoBehaviour を継承している必要があります。
つまり、これはダメ
public class MyAwesomeClass { void BestMethodEver() { StartCoroutine(SomeCoroutine()); } }
どうしても使いたかったら、ちゃんと MonoBehaviour を継承するか、
public class MyAwesomeClass : MonoBehaviour { void BestMethodEver() { StartCoroutine(SomeCoroutine()); } }
StartCoroutine を呼ぶ依代を探します。
public class MyAwesomeClass { void BestMethodEver() { Yorishiro yorishiro = GameObject.Find("Yorishiro").GetComponent<Yorishiro>(); yorishiro.StartCoroutine(SomeCoroutine()); } }
Unity は、シングルスレッドでの動作が基本で、Coroutine もシングルスレッドで動作します(ちょうど、Node のような感じ)。StartCoroutine で呼び出せば、ちゃんとゲームループと同じメインスレッドで動いてくれるので、自分で Coroutine を実装するよりは、↑のような方法で解決するほうが良さそうです。