Updated Event Execution Order
From Unify Community Wiki
(Difference between revisions)
m (Fixed some typos, added more info about coroutines) |
m (Mike Event Execution Order moved to Updated Event Execution Order) |
Revision as of 01:59, 9 June 2009
Contents |
Game loop
After an instantiation
For objects that were instantiated last game loop iteration:
- Start
Physics loop
Physics is run in a loop until timestep*count > Time.deltaTime:
- FixedUpdate
- Physics simulation
- OnCollisionEnter/OnCollisionStay/OnCollisionExit
- OnTriggerEnter/OnTriggerStay/OnTriggerExit
Update events
The rest of the events are run once per game loop iteration:
- WaitForFixedUpdate (Coroutines which yielded WaitForFixedUpdate will resume execution as soon as the physics loop finishes)
- Update
- WaitForSeconds/yield/yield return 0 (Coroutines which yielded one of these will resume execution here, with WaitForSeconds resuming after the defined time)
- LateUpdate
Rendering
- OnPreCull
- OnBecameVisible/OnBecameInvisible
- OnWillRenderObject
- OnPreRender
- OnRenderObject
- OnPostRender
- OnRenderImage (pro only)
- OnGUI
- 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 game loop finishes)
First scene load
Repeated once per object:
- Awake
- OnEnable (if the object is active)
At the beginning of the next frame, per object:
- Start
After calling Application.LoadLevel
Before the level loads
Repeated once per active object, after the end of the current frame:
- OnDisable
Level loads
After level loads
Repeated once per scene object:
- Awake
- OnEnable (if the object is active)
Repeated once per active DontDestroyOnLoad object from last level:
- OnEnable
Repeated once per active object:
- OnLevelWasLoaded
When quitting
For all active objects:
- OnApplicationQuit
- OnDisable
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)