Updated Event Execution Order
From Unify Community Wiki
(Difference between revisions)
m (Changed the wording to make coroutine behaviour more obvious, along with the physics iteration stuffs) |
|||
Line 8: | Line 8: | ||
===Physics loop=== | ===Physics loop=== | ||
− | Physics is run in a loop until | + | Physics is run in a loop, iterating over the following until physics has caught up to the current frame: |
*'''FixedUpdate''' | *'''FixedUpdate''' | ||
*Physics simulation | *Physics simulation | ||
*'''OnCollisionEnter'''/'''OnCollisionStay'''/'''OnCollisionExit''' | *'''OnCollisionEnter'''/'''OnCollisionStay'''/'''OnCollisionExit''' | ||
*'''OnTriggerEnter'''/'''OnTriggerStay'''/'''OnTriggerExit''' | *'''OnTriggerEnter'''/'''OnTriggerStay'''/'''OnTriggerExit''' | ||
− | *'''WaitForFixedUpdate''' ''(Coroutines which yielded WaitForFixedUpdate will resume execution after | + | *'''WaitForFixedUpdate''' ''(Coroutines which yielded WaitForFixedUpdate will resume execution after the next physics iteration completes)'' |
Line 38: | Line 38: | ||
===Before the frame ends=== | ===Before the frame ends=== | ||
− | *'''WaitForEndOfFrame''' ''(Coroutines which yielded WaitForEndOfFrame will resume execution before the game loop finishes)'' | + | *'''WaitForEndOfFrame''' ''(Coroutines which yielded WaitForEndOfFrame will resume execution before the next game loop finishes)'' |
Revision as of 03:43, 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, iterating over the following until physics has caught up to the current frame:
- FixedUpdate
- Physics simulation
- OnCollisionEnter/OnCollisionStay/OnCollisionExit
- OnTriggerEnter/OnTriggerStay/OnTriggerExit
- WaitForFixedUpdate (Coroutines which yielded WaitForFixedUpdate will resume execution after the next physics iteration completes)
Update events
The rest of the events are run once per game loop iteration:
- 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 next 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)