Bird
Raised Fist0
Unityframework~5 mins

MonoBehaviour lifecycle in Unity - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the Awake() method in a MonoBehaviour?

Awake() is called when the script instance is being loaded. It is used to initialize variables or states before the game starts. It runs even if the script component is disabled.

Click to reveal answer
beginner
When is the Start() method called in the MonoBehaviour lifecycle?

Start() is called before the first frame update, but only if the script component is enabled. It is used to set up things that depend on other objects being initialized.

Click to reveal answer
intermediate
What is the difference between Update() and FixedUpdate()?

Update() runs once per frame and is used for regular frame-based logic like input checking. FixedUpdate() runs at fixed time intervals and is used for physics calculations.

Click to reveal answer
intermediate
What does the OnEnable() method do in the MonoBehaviour lifecycle?

OnEnable() is called every time the script component is enabled or the GameObject it is attached to becomes active. It is useful for subscribing to events or resetting states.

Click to reveal answer
intermediate
Explain the role of OnDestroy() in MonoBehaviour.

OnDestroy() is called when the MonoBehaviour will be destroyed. It is used to clean up resources, unsubscribe from events, or save data before the object is removed.

Click to reveal answer
Which MonoBehaviour method is called only once when the script instance is loaded?
AUpdate()
BStart()
CFixedUpdate()
DAwake()
Which method is best for handling physics updates in Unity?
AFixedUpdate()
BUpdate()
CLateUpdate()
DOnEnable()
When is Start() called in the MonoBehaviour lifecycle?
ABefore the script instance is loaded
BBefore the first frame update if the script is enabled
CEvery frame
DWhen the object is destroyed
What happens when OnEnable() is called?
AThe script component or GameObject becomes active
BThe frame updates
CThe object is destroyed
DThe script instance is loaded
Which method should you use to clean up resources before an object is removed?
AAwake()
BStart()
COnDestroy()
DUpdate()
Describe the order of MonoBehaviour lifecycle methods from object creation to destruction.
Think about what happens when the object is created, enabled, updated, disabled, and destroyed.
You got /6 concepts.
    Explain when and why you would use FixedUpdate() instead of Update().
    Consider timing and physics calculations.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which MonoBehaviour method is called exactly once when the script instance is being loaded, before any Start methods?
      easy
      A. FixedUpdate()
      B. Update()
      C. Awake()
      D. OnDestroy()

      Solution

      1. Step 1: Understand MonoBehaviour initialization order

        Awake() is called once when the script instance is loaded, before Start().
      2. Step 2: Differentiate from other lifecycle methods

        Update() and FixedUpdate() run repeatedly, and OnDestroy() runs when the object is destroyed.
      3. Final Answer:

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

        Awake runs once at load = Awake() [OK]
      Hint: Awake runs once at load, before Start [OK]
      Common Mistakes:
      • Confusing Awake with Start
      • Thinking Update runs once
      • Mixing OnDestroy timing
      2. Which of the following is the correct syntax to declare the Update method in a MonoBehaviour script?
      easy
      A. void Update() {}
      B. public void Update() {}
      C. private Update() {}
      D. Update void() {}

      Solution

      1. Step 1: Recall method declaration rules in C# for Unity

        MonoBehaviour lifecycle methods like Update are usually declared as void Update() without access modifiers.
      2. Step 2: Check each option's syntax

        void Update() {} is correct syntax. public void Update() {} is valid C# but Unity recommends no access modifier. private Update() {} is missing return type. Update void() {} has wrong order.
      3. Final Answer:

        void Update() {} -> Option A
      4. Quick Check:

        Correct method syntax = void Update() {} [OK]
      Hint: Update method is always void Update() {} [OK]
      Common Mistakes:
      • Using wrong order of return type and name
      • Omitting void return type
      • Adding private keyword incorrectly
      3. What will be the output of the following code attached to a GameObject?
      using UnityEngine;
      
      public class TestLifecycle : MonoBehaviour {
          void Awake() {
              Debug.Log("Awake called");
          }
          void Start() {
              Debug.Log("Start called");
          }
          void Update() {
              Debug.Log("Update called");
              enabled = false;
          }
      }
      Assuming the game runs for one frame, what messages appear in the Console?
      medium
      A. ["Awake called", "Start called", "Update called"]
      B. ["Awake called", "Start called"]
      C. ["Start called", "Update called"]
      D. ["Awake called", "Update called"]

      Solution

      1. Step 1: Understand method call order on first frame

        On first frame, Awake() runs once at load, then Start() runs before first Update, then Update() runs.
      2. Step 2: Analyze Update disabling script

        The Update() method disables the script after logging, so it runs once this frame only.
      3. Final Answer:

        ["Awake called", "Start called", "Update called"] -> Option A
      4. Quick Check:

        Awake, Start, Update run once first frame [OK]
      Hint: Awake and Start run before first Update [OK]
      Common Mistakes:
      • Thinking Update disables before logging
      • Missing Awake call
      • Assuming Update runs multiple times first frame
      4. Identify the error in this MonoBehaviour script:
      using UnityEngine;
      
      public class Example : MonoBehaviour {
          void Start() {
              Debug.Log("Start called");
          }
      
          void Update() {
              Debug.Log("Update called");
          }
      
          void OnDestroy() {
              Debug.Log("Destroying object");
          }
      
          void awake() {
              Debug.Log("Awake called");
          }
      }
      medium
      A. Start method must be static
      B. OnDestroy method must return a bool
      C. Update method cannot have Debug.Log calls
      D. Method awake() should be Awake() with capital A

      Solution

      1. Step 1: Check method names for correct casing

        Unity lifecycle methods are case-sensitive. awake() is incorrect; it must be Awake().
      2. Step 2: Verify other method signatures

        OnDestroy() returns void, Update() can have Debug.Log, and Start() is instance method, not static.
      3. Final Answer:

        Method awake() should be Awake() with capital A -> Option D
      4. Quick Check:

        Method names are case-sensitive = Awake() [OK]
      Hint: Unity method names must match exact case [OK]
      Common Mistakes:
      • Ignoring case sensitivity
      • Thinking OnDestroy returns bool
      • Assuming Start must be static
      5. You want to ensure a GameObject cleans up resources before it is destroyed. Which MonoBehaviour method should you override, and what is the best practice to use it?
      hard
      A. Override Start() and release resources there.
      B. Override OnDestroy() and release resources or unsubscribe from events there.
      C. Override Update() and check if object is destroyed to release resources.
      D. Override Awake() and release resources there.

      Solution

      1. Step 1: Identify the cleanup lifecycle method

        OnDestroy() is called just before the object is destroyed, ideal for cleanup.
      2. Step 2: Understand best practice for resource management

        Release resources and unsubscribe from events inside OnDestroy() to avoid memory leaks or errors.
      3. Final Answer:

        Override OnDestroy() and release resources or unsubscribe from events there. -> Option B
      4. Quick Check:

        Cleanup happens in OnDestroy() [OK]
      Hint: Use OnDestroy to clean up before object removal [OK]
      Common Mistakes:
      • Trying to clean up in Start or Awake
      • Checking destruction inside Update
      • Not unsubscribing from events
      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