Bird
Raised Fist0
Unityframework~10 mins

Scene loading and unloading in Unity - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Scene loading and unloading
Start
↓
Call LoadScene
↓
Scene Loads
↓
Scene Active
↓
Call UnloadScene
↓
Scene Unloads
↓
Back to Start or Next Scene
This flow shows how a scene is loaded, becomes active, and then unloaded in Unity.
Execution Sample
Unity
using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneLoader : MonoBehaviour
{
    public void LoadAndUnload()
    {
        SceneManager.LoadScene("Level1", LoadSceneMode.Additive);
        SceneManager.UnloadSceneAsync("Level1");
    }
}
This code loads a scene named 'Level1' and then unloads it asynchronously.
Execution Table
StepActionScene StateResult
1Call LoadScene("Level1")Level1: Not LoadedStarts loading Level1 scene
2SceneManager loads Level1Level1: LoadingScene assets load into memory
3Level1 scene becomes activeLevel1: Loaded and ActiveScene is ready to use
4Call UnloadSceneAsync("Level1")Level1: Loaded and ActiveStarts unloading Level1 scene
5SceneManager unloads Level1Level1: UnloadingScene assets removed from memory
6Level1 scene fully unloadedLevel1: Not LoadedScene no longer in memory
💡 Scene is fully unloaded, no longer active or in memory
Variable Tracker
VariableStartAfter LoadSceneAfter Scene ActiveAfter UnloadSceneAsyncAfter Unload Complete
SceneStateNot LoadedLoadingLoaded and ActiveUnloadingNot Loaded
Key Moments - 3 Insights
Why does the scene state change from 'Loading' to 'Loaded and Active'?
Because after LoadScene is called, Unity loads all scene assets, then activates the scene making it ready to use (see execution_table steps 2 and 3).
What happens if you try to unload a scene that is not loaded?
Nothing happens because the scene is not in memory; unloading only works on loaded scenes (see execution_table step 4 where unload starts only if scene is loaded).
Is unloading a scene synchronous or asynchronous?
Unloading is asynchronous, meaning it happens in the background without freezing the game (see execution_table step 4 and 5).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the scene state immediately after calling LoadScene?
ALoading
BLoaded and Active
CNot Loaded
DUnloading
💡 Hint
Check execution_table row 1 and 2 for scene state changes after LoadScene call.
At which step does the scene become ready for use?
AStep 2
BStep 3
CStep 4
DStep 5
💡 Hint
Look at execution_table step where scene state is 'Loaded and Active'.
If you skip calling UnloadSceneAsync, what happens to the scene state?
AScene goes to Unloading state
BScene becomes Not Loaded automatically
CScene stays Loaded and Active
DScene reloads again
💡 Hint
Refer to variable_tracker and execution_table steps 4-6 about unloading process.
Concept Snapshot
Scene loading and unloading in Unity:
- Use SceneManager.LoadScene("SceneName") to load a scene.
- Scene loads assets then becomes active.
- Use SceneManager.UnloadSceneAsync("SceneName") to unload asynchronously.
- Scene state changes: Not Loaded -> Loading -> Loaded and Active -> Unloading -> Not Loaded.
- Unloading frees memory without freezing the game.
Full Transcript
This visual execution shows how Unity loads and unloads scenes step-by-step. First, LoadScene is called, which starts loading the scene assets. Once loaded, the scene becomes active and ready to use. Later, UnloadSceneAsync is called to remove the scene from memory asynchronously. The scene state changes from Not Loaded to Loading, then Loaded and Active, then Unloading, and finally back to Not Loaded. This process helps manage game memory and scene transitions smoothly.

Practice

(1/5)
1. What does loading a scene in Unity do?
easy
A. It changes what the player sees by switching or adding scenes.
B. It deletes all game objects permanently.
C. It saves the current game progress automatically.
D. It pauses the game without changing the view.

Solution

  1. Step 1: Understand scene loading purpose

    Loading a scene changes the visible content by switching or adding new scenes.
  2. Step 2: Compare other options

    Deleting objects, saving progress, or pausing are unrelated to scene loading.
  3. Final Answer:

    It changes what the player sees by switching or adding scenes. -> Option A
  4. Quick Check:

    Scene loading = change visible scenes [OK]
Hint: Loading scenes changes what player sees [OK]
Common Mistakes:
  • Confusing loading with saving game progress
  • Thinking loading deletes objects
  • Assuming loading pauses the game
2. Which of the following is the correct syntax to load a scene additively in Unity using C#?
easy
A. SceneManager.LoadScene("Level2", LoadSceneMode.Additive);
B. SceneManager.LoadSceneAdditive("Level2");
C. SceneManager.LoadScene("Level2", true);
D. SceneManager.AddScene("Level2");

Solution

  1. Step 1: Recall Unity scene loading syntax

    The correct method is LoadScene with scene name and LoadSceneMode.Additive as parameters.
  2. Step 2: Check each option

    Only SceneManager.LoadScene("Level2", LoadSceneMode.Additive); uses the correct method and enum for additive loading.
  3. Final Answer:

    SceneManager.LoadScene("Level2", LoadSceneMode.Additive); -> Option A
  4. Quick Check:

    LoadScene + LoadSceneMode.Additive = correct syntax [OK]
Hint: Use LoadScene with LoadSceneMode.Additive [OK]
Common Mistakes:
  • Using non-existent methods like LoadSceneAdditive
  • Passing boolean instead of LoadSceneMode enum
  • Confusing AddScene with LoadScene
3. What will happen if you run this code snippet in Unity?
SceneManager.LoadScene("Menu");
SceneManager.LoadScene("Game", LoadSceneMode.Additive);
medium
A. Only the "Game" scene will be loaded, replacing "Menu".
B. Only the "Menu" scene will be loaded, ignoring the second call.
C. Both "Menu" and "Game" scenes will be loaded together.
D. An error will occur because you cannot load two scenes in a row.

Solution

  1. Step 1: Understand default and additive loading

    The first call loads "Menu" scene normally (single mode), replacing current scenes. The second call loads "Game" additively, adding it without unloading "Menu".
  2. Step 2: Analyze the sequence

    Since the second call uses additive mode, both scenes "Menu" and "Game" will be loaded together.
  3. Final Answer:

    Both "Menu" and "Game" scenes will be loaded together. -> Option C
  4. Quick Check:

    Additive loading adds scene without unloading [OK]
Hint: Additive mode loads scene without unloading others [OK]
Common Mistakes:
  • Assuming first load is replaced by second always
  • Thinking additive unloads previous scenes
  • Believing multiple loads cause errors
4. Identify the error in this Unity C# code for unloading a scene:
SceneManager.UnloadScene("Level1");
medium
A. UnloadScene is deprecated; use UnloadSceneAsync with scene name.
B. UnloadSceneAsync should be used instead of UnloadScene.
C. There is no error; the code unloads the scene correctly.
D. UnloadScene requires a Scene object, not a string.

Solution

  1. Step 1: Check Unity API for unloading scenes

    SceneManager.UnloadScene requires a Scene object as parameter, not a string name. No overload accepts string directly.
  2. Step 2: Analyze the code

    The code will not compile. Correct usage: Scene scene = SceneManager.GetSceneByName("Level1"); SceneManager.UnloadScene(scene);
  3. Final Answer:

    UnloadScene requires a Scene object, not a string. -> Option D
  4. Quick Check:

    UnloadScene(Scene), not (string) [OK]
Hint: UnloadScene requires Scene object, not string [OK]
Common Mistakes:
  • Passing string name instead of Scene object
  • Thinking UnloadScene is deprecated
  • Assuming the code runs without error
5. You want to load a new scene "Battle" without unloading the current "Town" scene, but only if "Battle" is not already loaded. Which code snippet correctly does this in Unity?
hard
A. SceneManager.UnloadSceneAsync("Town"); SceneManager.LoadScene("Battle");
B. if (!SceneManager.GetSceneByName("Battle").isLoaded) { SceneManager.LoadScene("Battle", LoadSceneMode.Additive); }
C. SceneManager.LoadScene("Battle", LoadSceneMode.Single);
D. SceneManager.LoadScene("Battle");

Solution

  1. Step 1: Check if "Battle" scene is already loaded

    Use SceneManager.GetSceneByName("Battle").isLoaded to verify if scene is loaded.
  2. Step 2: Load "Battle" additively if not loaded

    If not loaded, call LoadScene with LoadSceneMode.Additive to keep "Town" scene loaded.
  3. Final Answer:

    if (!SceneManager.GetSceneByName("Battle").isLoaded) { SceneManager.LoadScene("Battle", LoadSceneMode.Additive); } -> Option B
  4. Quick Check:

    Check loaded + additive load = correct approach [OK]
Hint: Check isLoaded before additive load [OK]
Common Mistakes:
  • Loading scene in single mode, unloading current scene
  • Not checking if scene is already loaded
  • Unloading current scene before loading new one
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