WaitUntilやWaitWhileはインスタンスを作成する
コルーチン内のyield returnでnew WaitUntileやWaitWhileは、新しいインスタンスを作成してメモリアロケーションが発生するので、何回もコルーチンを呼び出す場合はあんまりよろしくない。
代わりにyield return nullはメモリアロケーションが発生しないのでこちらに代用できると最適化できる。
コーディングの例
メモリアロケーションが発生するコード
IEnumerator yWaitTask()
{
// isCompletedがtrueになるまで待つ
yield return new WaitUntil(() => isCompleted == true);
}最適化バージョン
IEnumerator yWaitTask2()
{
while(isCompleted == false) {
yield return null;
}
}