Event Execution Order

From Unify Community Wiki
Jump to: navigation, search

Author: Michael Garforth


Game loop

The following all happens in a single loop, in the order specified Physics does not necessarily run each time, and can run multiple times

After an instantiation

For objects that were instantiated last game loop iteration:

Physics loop

Physics is run in a loop, iterating over the following until physics has caught up to the current frame:

Update events

The rest of the events are run once per game loop iteration:



  • OnGUI (Called multiple times. Layout then Repaint events are called first, followed by a Layout and keyboard/mouse event for each input event)
  • OnDrawGizmos (Only when scene is drawn, even if object is inactive)

Before the frame ends

  • WaitForEndOfFrame (Coroutines which yielded WaitForEndOfFrame will resume execution before the next game loop finishes)

First scene load

Repeated once per object:

At the beginning of the next frame, per object:

After calling Application.LoadLevel

Before the level loads

Repeated once per active object, after the end of the current frame:

Level loads

After level loads

Repeated once per scene object:

Repeated once per active DontDestroyOnLoad object from last level:

Repeated once per active object:

Please pay attention: OnLevelWasLoaded is NOT guaranteed to run before all of the Awake calls. In most cases it will, but in some might produce some unexpected bugs. If you need some code to be executed before Awake calls, use OnDisable instead.

When quitting

For all active objects:

Immediate events

These are all called immediately when certain functions are called (e.g. Instantiate, setting enabled):

  • Awake - called during MonoBehaviour instantiation
  • OnEnable / OnDisable - OnEnable called during MonoBehaviour instantiation
  • Reset - called when the script is reset (Editor Only)
Personal tools