なんかの Log

良い感じで投げっぱなしにしてみせる。

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>();