おける最適化コルーチンメモリアセットの監査コルーチンコルーチンは、他のスクリプトコードからは異なる形で実行されます。コールバック呼び出しの下の一箇所にのみ表示されます。コードは出力内で常に二箇所に表示されます。あるコルーチンの初期コード(コルーチンメソッドの開始から初回イールドまで)の全ては、そのコルーチンの開始された場所に表示されます。メソッドが呼び出された場所になります。コールバック内に表示されます。ライン内に表示されます。上記のようになるか理解するために、コルーチンの実行される仕組みを考えてみましょう。コンパイラーによって自動生成されるクラスのインスタンスに基づいています。このオブジェクトは、(プログラマーにとっては単一のメソッドである)複数の呼び出しにわたってコルーチンのステート(状態)をトラッキングするために必要とされます。コールにわたって維持されなければならないため、これらのローカルスコープ変数は生成されたクラス内に巻き上げされ、その結果、コルーチンの持続時間を通してヒープに割り当てられたままになります。このオブジェクトはコルーチンの内部ステートのトラッキングも行っており、コード内のどの時点で、イールド後にコルーチンが再開しなければならないかを記憶しています。このため、コルーチンの開始によって掛かるメモリ負荷は、一定のオーバーヘッドコストに、そのローカルスコープ変数のサイズを足したものということになります。それを再度呼び出します。いくつかの異なるコルーチンを再開している箇所がこれに当たります。一連の処理がある場合、可能であれば、個々のコルーチンの数がなるべく少なくなるように凝縮することをお勧めします。入れ子になったコルーチンは、コードの明瞭化や維持の面では大変優れていますが、オブジェクトがコルーチンをトラッキングしているため、メモリオーバーヘッドが高くなってしまいます。コールバックに置き換えたほうがより読み易くなります。コルーチンは、オブジェクトが無効になっても停止しません。確実に破棄されたときにのみ停止します。これにより、例えば、コルーチンが実行され、必要に応じてオブジェクトを再度有効にすることができます。起動し、コルーチンが処理されます。OnDestroyが呼び出されます。ことを覚えておくことが重要です。コルーチン内で実行される同期操作は、メインスレッドでも実行されます。時間を削減することであるならば、他のスクリプトコード内と同じようにコルーチン内の操作をブロックしないようにすることも同様に重要です。コルーチンは、長時間の非同期処理を扱う場合に使用するのが最適です。通信やアセットの読み込み、ファイル出入力の完了の待機などです。2017.3チュートリアルAnswersナレッジベースフォーラムアセットストアフィードバック。