This is an old revision of the document!
⇐ Index
:Awake is called whenever a unit with this script attached is created. This can happen at game load, or during a game when a unit is created with CreateUnit.
Please refer to Programming Notes for an in-depth discussion and comparison between ` :Once`, `:GameLoaded`, and `:Awake`.
For Global Control scripts, :Awake runs during a game frame, either before units are processed (for the Pre- phase) or after units are processed (for the Post- phase). Here, both :Awake and :Once run alongside each other, and depending on whether the script is marked to run while paused or not, both of them will run either during a paused frame or an unpaused frame. Because of this, :Awake in Global Control scripts will always run after :Awake in units. Key difference between :Awake and :Once remains where :Awake will run again when the map is loaded, but :Once will not.
Execution order of Global Control scripts which run while paused:
Execution order of Global Control scripts which do not run while paused:
A critical distinction exists between scripts attached to units and scripts scheduled to run during Pre- or Post- phases of Global Control.
Functionally, the :Awake function in pre- or Post Global Control phases are equivalent to a :Once function. It is not executed until the appropriate moment in processing (before or after all units are processed for every game tick). This may cause execution of :Awake functions to appear in the incorrect order, where each unit will execute it's :Awake function as it is instantiated during map load (either initial load or load from a save, there is no difference), and the :Awake in a Global Control script will execute at the beginning or end, respectively, of a game tick.
:Awake SetUnitDebugText(self "I Live")