StartCoroutineやyield周り
なんかC#だとStartCoroutineを使わなきゃいけないと思っていたけどそうじゃなかった。
SartCoroutineメソッドを使わなきゃいけないのはUpdateやFixedUpdateなどの関数だけらしい。というかMonoBehaviourのメソッドをオーバーライドしてる形になるからMonoBehaviourで定義している関数では使えない。
yieldを使うときに返却型がIEnumeratorじゃなきゃいけなかったりコルーチンだったりするのはC#の仕様だからここらへんはC#自体を調べたほうがいいんだろう。
リファレンスではAwakeを例に書いてあるくせにエラー吐き出しやがります。
Awake() can not be a coroutine.
でもなぜかStartメソッドなら使えたりする。ちょっと怪しい?
IEnumerator Start() { print(Time.time); yield return new WaitForSeconds(3f); print(Time.time); }
普通はStartCoroutineを使わなきゃいけない。
void Start() { print("start :" + Time.time); StartCoroutine(WaitTime()); print("start :" + Time.time); } IEnumerator WaitTime() { print("wait :" + Time.time); yield return new WaitForSeconds(3f); print("wait :" + Time.time); }
yieldはJavascriptで書いたらすっきりするからそっちのほうがいいのかも。
C#で1フレームスキップ
yield return 0;
UnityScriptのジェネリクスがきもい
GetComponent.<TypeName>();