Bird
Raised Fist0
Unityframework~10 mins

Awake vs Start execution order in Unity - Visual Side-by-Side Comparison

Choose your learning style10 modes available
Concept Flow - Awake vs Start execution order
GameObject Created
↓
Awake Called on All Scripts
↓
Start Called on Enabled Scripts
↓
Game Starts Running
Unity calls Awake first on all scripts when the object is created, then calls Start on enabled scripts before the game begins running.
Execution Sample
Unity
void Awake() {
    Debug.Log("Awake called");
}

void Start() {
    Debug.Log("Start called");
}
This code logs messages showing when Awake and Start methods are called during Unity's execution order.
Execution Table
StepMethod CalledScript StateActionOutput
1AwakeAll scripts initializedInitialize variables, setup references"Awake called" logged
2AwakeNext script initializedInitialize variables, setup references"Awake called" logged
3StartScripts enabledBegin gameplay logic"Start called" logged
4StartNext script enabledBegin gameplay logic"Start called" logged
5Game RunningAll scripts readyGameplay proceedsNo further Awake or Start calls
💡 All Awake methods run first on all scripts, then all Start methods run on enabled scripts before gameplay continues.
Variable Tracker
VariableBefore AwakeAfter AwakeAfter StartFinal
isInitializedfalsetruetruetrue
isReadyfalsefalsetruetrue
Key Moments - 2 Insights
Why does Awake run before Start on all scripts instead of running Awake and Start on one script before moving to the next?
Unity calls Awake on all scripts first to ensure all objects are initialized before any Start method runs, as shown in execution_table steps 1-2 (Awake) then 3-4 (Start).
What happens if a script is disabled when Awake runs?
Awake still runs on disabled scripts to initialize them, but Start only runs on enabled scripts, as seen in execution_table where Start runs only on enabled scripts.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, at which step does the first Start method run?
AStep 3
BStep 2
CStep 1
DStep 5
💡 Hint
Check the 'Method Called' column for 'Start' and see which step it first appears.
According to variable_tracker, when does 'isReady' become true?
AAfter Awake
BBefore Awake
CAfter Start
DNever
💡 Hint
Look at the 'isReady' row and see when its value changes to true.
If a script is disabled, which method will still run according to the execution flow?
ANeither Awake nor Start
BAwake only
CStart only
DBoth Awake and Start
💡 Hint
Refer to the key_moments section explaining Awake runs on disabled scripts but Start does not.
Concept Snapshot
Awake runs first on all scripts when objects are created.
Start runs after Awake only on enabled scripts.
Awake is for initialization; Start is for gameplay setup.
Awake always runs before any Start.
Disabled scripts run Awake but not Start.
Full Transcript
In Unity, when a game starts, the Awake method is called first on all scripts attached to game objects. This happens even if the scripts are disabled. Awake is used to initialize variables and set up references. After all Awake methods have run, Unity calls the Start method on all enabled scripts. Start is used to begin gameplay logic. This order ensures all objects are ready before gameplay begins. The execution table shows Awake calls first on all scripts, then Start calls. Variables like isInitialized become true after Awake, while isReady becomes true after Start. If a script is disabled, Awake still runs but Start does not. This helps avoid errors from uninitialized objects during gameplay.

Practice

(1/5)
1. In Unity, which method is called first when a scene loads: Awake or Start?
easy
A. Awake is called before Start.
B. Start is called before Awake.
C. Both are called at the same time.
D. Neither is called automatically.

Solution

  1. Step 1: Understand Unity's initialization order

    Unity calls Awake first to initialize objects early.
  2. Step 2: Recognize Start timing

    Start runs after Awake, before gameplay begins.
  3. Final Answer:

    Awake is called before Start. -> Option A
  4. Quick Check:

    Awake runs first = D [OK]
Hint: Remember: Awake sets up early, Start sets up later [OK]
Common Mistakes:
  • Thinking Start runs before Awake
  • Believing both run simultaneously
  • Assuming methods need manual calls
2. Which of the following is the correct syntax to define the Awake method in a Unity C# script?
easy
A. public void awake() { }
B. private Awake() { }
C. void Awake() { }
D. Awake() => { }

Solution

  1. Step 1: Recall Unity method syntax

    Unity calls Awake automatically if defined as void Awake().
  2. Step 2: Check access modifiers

    Awake is usually private by default, so void Awake() is correct and common.
  3. Final Answer:

    void Awake() { } -> Option C
  4. Quick Check:

    Use void Awake() syntax [OK]
Hint: Awake method is usually defined as void Awake() [OK]
Common Mistakes:
  • Adding public or private explicitly (not required)
  • Using arrow syntax which is invalid here
  • Omitting return type
3. Consider this Unity script attached to a GameObject:
void Awake() { Debug.Log("Awake called"); }
void Start() { Debug.Log("Start called"); }

What will be the order of messages in the Console when the scene starts?
medium
A. Only "Awake called" appears
B. "Start called" then "Awake called"
C. Only "Start called" appears
D. "Awake called" then "Start called"

Solution

  1. Step 1: Identify method call order

    Unity calls Awake first, so "Awake called" logs first.
  2. Step 2: Confirm Start runs after Awake

    Then Start runs, logging "Start called" second.
  3. Final Answer:

    "Awake called" then "Start called" -> Option D
  4. Quick Check:

    Awake logs first, Start logs second [OK]
Hint: Awake logs before Start logs in console [OK]
Common Mistakes:
  • Assuming Start logs before Awake
  • Thinking only one method logs
  • Confusing method call timing
4. You wrote this script but Start never runs:
void Awake() { Debug.Log("Awake"); }
void start() { Debug.Log("Start"); }

What is the problem?
medium
A. Awake prevents Start from running.
B. start method name is lowercase, should be Start.
C. The script is missing public keyword on Start.
D. Unity does not call Start automatically.

Solution

  1. Step 1: Check method names for case sensitivity

    Unity requires exact method names; Start must be capitalized.
  2. Step 2: Understand Unity's method calling rules

    Lowercase start is ignored, so Start never runs.
  3. Final Answer:

    start method name is lowercase, should be Start. -> Option B
  4. Quick Check:

    Method names are case-sensitive [OK]
Hint: Check method names are exactly capitalized [OK]
Common Mistakes:
  • Assuming Awake blocks Start
  • Thinking public keyword is required
  • Believing Unity calls lowercase methods
5. You have two scripts on different GameObjects:
Script A:
void Awake() { Debug.Log("A Awake"); }
void Start() { Debug.Log("A Start"); }

Script B:
void Awake() { Debug.Log("B Awake"); }
void Start() { Debug.Log("B Start"); }

What is the correct order of messages in the Console when the scene starts?
hard
A. "A Awake", "B Awake", "A Start", "B Start"
B. "A Awake", "A Start", "B Awake", "B Start"
C. "A Start", "B Start", "A Awake", "B Awake"
D. "B Awake", "A Awake", "B Start", "A Start"

Solution

  1. Step 1: Understand Awake runs on all objects first

    Unity calls all Awake methods before any Start methods.
  2. Step 2: Recognize Start runs after all Awake calls

    After all Awake calls, Unity calls all Start methods.
  3. Final Answer:

    "A Awake", "B Awake", "A Start", "B Start" -> Option A
  4. Quick Check:

    All Awake first, then all Start [OK]
Hint: All Awake run before any Start runs [OK]
Common Mistakes:
  • Thinking Awake and Start alternate per object
  • Assuming Start runs before Awake
  • Believing order between objects is random
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard