📲
【Unity】イベント関数の実行順序 まとめ
Unityでは、様々なイベントが用意されており、処理の実行順序に影響します。
呼び出されるタイミングなど調べる機会があったので、Unityのイベント関数についてまとめました。
1 初期化イベント
Awake
- スクリプトがActiveになった時に最初に呼び出される関数です。
- 全てのオブジェクトの
Awakeが実行されてからStartに進みます。 -
Awake内では他のオブジェクトの初期化状態に依存しない処理を行う必要があります。
Start
-
Awakeの完了後、スクリプトが最初に有効化されたタイミングで一度だけ実行されます。 -
Awakeが全てのオブジェクトで完了した後、それぞれのStartが順次呼ばれます。
2 更新イベント
Update
- 毎フレーム呼び出される。
- 各オブジェクトごとに
Startが完了後、その次のフレームからUpdateが開始されます。 - 他のオブジェクトの
Startが終わるのを待たずに、Updateは個々のオブジェクトで並行して実行されます。
例: 複数のオブジェクトがある場合
ObjectA: Awake
ObjectB: Awake
ObjectA: Start
ObjectA: Update
ObjectB: Start
ObjectB: Update
LateUpdate
-
全てのオブジェクトの
Updateが終了した後に実行。 - 他のオブジェクトの
Update結果を元にした処理に適しています。 - 例えば、3DモデルがAnimatorで
Updateで計算され、
その位置を基に動かす処理をLateUpdateで実行する場合があります。
FixedUpdate
- 一定の時間間隔(デフォルトは0.02秒)で呼び出されます。
-
Time.fixedDeltaTimeで指定された一定間隔で実行されるため、フレームレートに依存しません。 - Unityの物理演算は、このTime.fixedDeltaTimeの固定間隔で進行するように設計されているため、フレームレートが速くても遅くても、物理シミュレーションは安定して行われるようになっています。
- FixedUpdateは物理演算が開始されるタイミングで実行されるため、Rigidbodyの操作や物理挙動を扱う処理を記載できます。
- Time.fixedDeltaTimeはProjectSettings>Timeで変更可能です。

3 コルーチンの実行順序
Unityのコルーチンは、Updateの後に実行されます。
コルーチンは時間経過やフレーム数の制御が簡単に行うことがで、様々な待機処理を書くことができます。
待機処理の例
-
yield return nullの場合、次のフレームのUpdate終了後に再開 -
yield return new WaitForSeconds(2)の場合、2秒待機 -
yield WaitForFixedUpdateの場合、次のFixedUpdateの後に再開 -
yield WWWの場合、リクエストが完了するとコルーチンが再開 -
yield StartCoroutine呼び出されたコルーチンが完了するのを待機してから、続きが再開
実行順序のまとめ
-
全てのオブジェクトで
Awake→Start。 -
各オブジェクトで
Startが終わると次のフレームでUpdate開始。 - 更新系のイベント(
Update→LateUpdate)。 - FixedUpdateは、Time.fixedDeltaTimeでタイマー管理されている。
- コルーチンは
Updateの後に実行され、様々な待機処理を行える。


Discussion