Bird
Raised Fist0
Unityframework~10 mins

Scene creation and management in Unity - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Scene creation and management
Start Unity Editor
↓
Create New Scene
↓
Add GameObjects
↓
Save Scene with Name
↓
Load Scene by Name
↓
Manage Scene (Additive, Unload)
↓
Play and Test Scene
↓
Modify and Save Changes
↓
Exit or Load Another Scene
This flow shows how you create, save, load, and manage scenes step-by-step in Unity.
Execution Sample
Unity
using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneLoader : MonoBehaviour {
    public void LoadGameScene() {
        SceneManager.LoadScene("GameScene");
    }
}
This code loads a scene named "GameScene" when the function is called.
Execution Table
StepActionSceneManager MethodScene StateOutput/Result
1Start Unity EditorN/ANo scene loadedEditor ready
2Create new sceneN/ANew empty scene createdScene created
3Add GameObjectsN/AScene has objectsObjects visible in scene
4Save scene as 'MainMenu'N/AScene saved with name 'MainMenu'Scene saved
5Call LoadScene('GameScene')SceneManager.LoadScene("GameScene")Unload 'MainMenu', load 'GameScene'GameScene loaded and active
6Additively load 'HUD' sceneSceneManager.LoadScene("HUD", LoadSceneMode.Additive)'GameScene' + 'HUD' loadedBoth scenes active
7Unload 'HUD' sceneSceneManager.UnloadSceneAsync("HUD")'HUD' unloaded, 'GameScene' activeHUD removed
8Exit play modeN/AReturn to editor sceneBack to editor
9EndN/AExecution completeNo further action
💡 Execution stops after scenes are loaded/unloaded and play mode ends.
Variable Tracker
VariableStartAfter Step 4After Step 5After Step 6After Step 7Final
CurrentSceneNoneMainMenuGameSceneGameScene + HUDGameSceneGameScene
IsAdditiveLoadFalseFalseFalseTrueFalseFalse
Key Moments - 3 Insights
Why does loading a scene replace the current scene by default?
By default, SceneManager.LoadScene unloads the current scene and loads the new one, as shown in step 5 of the execution_table. To keep multiple scenes, you must use additive loading.
What happens when you load a scene additively?
Additive loading adds the new scene to the currently loaded scenes without unloading them, as seen in step 6 where 'HUD' is added alongside 'GameScene'.
How do you unload a scene that was loaded additively?
You use SceneManager.UnloadSceneAsync with the scene name, as in step 7 where 'HUD' is unloaded, removing it from active scenes.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 5. What scene is active after LoadScene("GameScene") is called?
A"MainMenu"
B"HUD"
C"GameScene"
DNo scene is active
💡 Hint
Check the 'Scene State' column at step 5 in the execution_table.
At which step does the scene manager have two scenes loaded at once?
AStep 5
BStep 6
CStep 4
DStep 7
💡 Hint
Look for 'GameScene + HUD' in the 'Scene State' column in the execution_table.
If you want to keep the current scene and add a new one, which SceneManager method and mode should you use?
ALoadScene with LoadSceneMode.Additive
BLoadScene with LoadSceneMode.Single
CUnloadSceneAsync
DLoadSceneAsync with LoadSceneMode.Single
💡 Hint
Refer to step 6 in the execution_table where additive loading is used.
Concept Snapshot
Scene creation and management in Unity:
- Create scenes in Editor, add GameObjects
- Save scenes with unique names
- Load scenes with SceneManager.LoadScene(name)
- Default load unloads current scene
- Use LoadSceneMode.Additive to load multiple scenes
- Unload scenes with SceneManager.UnloadSceneAsync(name)
Full Transcript
This lesson shows how to create and manage scenes in Unity. You start by creating a new scene in the editor and adding game objects. Then you save the scene with a name like 'MainMenu'. To switch scenes in code, you call SceneManager.LoadScene with the scene name. By default, this unloads the current scene and loads the new one. If you want to load multiple scenes at once, use LoadScene with LoadSceneMode.Additive. You can unload additive scenes with UnloadSceneAsync. The execution table traces these steps showing scene states and method calls. The variable tracker shows how the current scene changes over time. Key moments explain why additive loading is needed and how unloading works. The quiz tests your understanding of scene states and loading modes. Remember, managing scenes well helps organize your game and control what the player sees.

Practice

(1/5)
1. What is the main purpose of scenes in Unity?
easy
A. To manage player input controls
B. To write scripts for game logic
C. To create 3D models for characters
D. To organize different parts of a game like levels or menus

Solution

  1. Step 1: Understand what scenes represent in Unity

    Scenes are containers that hold game objects and organize the game into parts like levels or menus.
  2. Step 2: Identify the correct purpose

    Among the options, only organizing game parts matches the role of scenes.
  3. Final Answer:

    To organize different parts of a game like levels or menus -> Option D
  4. Quick Check:

    Scenes organize game parts = A [OK]
Hint: Scenes divide your game into levels or menus [OK]
Common Mistakes:
  • Confusing scenes with scripts
  • Thinking scenes create 3D models
  • Mixing scenes with input management
2. Which of the following is the correct way to load a scene named "Level1" using SceneManager?
easy
A. SceneManager.LoadSceneByName("Level1");
B. SceneManager.Load("Level1");
C. SceneManager.LoadScene("Level1");
D. SceneManager.LoadSceneAsync("Level1", true);

Solution

  1. Step 1: Recall the correct method to load a scene synchronously

    The official method is LoadScene with the scene name as a string.
  2. Step 2: Check each option

    SceneManager.LoadScene("Level1"); uses SceneManager.LoadScene("Level1"), which is correct syntax. Others are either incorrect method names or wrong parameters.
  3. Final Answer:

    SceneManager.LoadScene("Level1"); -> Option C
  4. Quick Check:

    LoadScene("Level1") is correct method [OK]
Hint: Use LoadScene with scene name string [OK]
Common Mistakes:
  • Using incorrect method names like Load or LoadSceneByName
  • Adding extra parameters incorrectly
  • Confusing async and sync loading methods
3. What will happen if you run this code snippet in Unity?
using UnityEngine.SceneManagement;

void Start() {
    SceneManager.LoadScene("Menu");
    Debug.Log("Scene Loaded");
}
medium
A. The scene "Menu" loads and then "Scene Loaded" is printed
B. Nothing happens because scenes must be loaded asynchronously
C. The code causes a compile error
D. "Scene Loaded" is printed before the scene loads

Solution

  1. Step 1: Understand synchronous scene loading behavior

    LoadScene loads the new scene immediately, replacing the current one, so code after it runs only if the scene is additive or async.
  2. Step 2: Analyze the code flow

    Since LoadScene is synchronous and replaces the scene immediately, the scene "Menu" loads and then "Scene Loaded" is printed.
  3. Final Answer:

    The scene "Menu" loads and then "Scene Loaded" is printed -> Option A
  4. Quick Check:

    LoadScene is synchronous, so log runs after scene load = A [OK]
Hint: LoadScene is synchronous; code after runs after scene loads [OK]
Common Mistakes:
  • Assuming LoadScene is asynchronous
  • Expecting Debug.Log after scene load
  • Thinking code causes errors
4. You wrote this code to load a scene but it throws an error:
SceneManager.LoadScene(Level2);

What is the most likely cause?
medium
A. The scene name should be in quotes as a string
B. SceneManager cannot load scenes
C. You must use LoadSceneAsync instead
D. Level2 is not a valid scene name

Solution

  1. Step 1: Check the syntax of LoadScene argument

    LoadScene expects a string for the scene name, so it must be in quotes.
  2. Step 2: Identify the error cause

    Without quotes, Level2 is treated as a variable, causing a compile error if undefined.
  3. Final Answer:

    The scene name should be in quotes as a string -> Option A
  4. Quick Check:

    Scene name must be string in quotes = B [OK]
Hint: Always put scene names in quotes as strings [OK]
Common Mistakes:
  • Forgetting quotes around scene names
  • Assuming LoadSceneAsync is required
  • Thinking SceneManager can't load scenes
5. You want to load a new scene "Level3" without unloading the current scene. Which method and parameter should you use?
hard
A. SceneManager.UnloadSceneAsync("Level3");
B. SceneManager.LoadScene("Level3", LoadSceneMode.Additive);
C. SceneManager.LoadScene("Level3", LoadSceneMode.Single);
D. SceneManager.LoadSceneAsync("Level3", true);

Solution

  1. Step 1: Understand scene loading modes

    LoadSceneMode.Additive loads a scene without unloading the current one, allowing multiple scenes active.
  2. Step 2: Match method and parameter

    SceneManager.LoadScene("Level3", LoadSceneMode.Additive); uses LoadScene with Additive mode, which fits the requirement. LoadScene with LoadSceneMode.Single unloads the current scene. UnloadSceneAsync unloads a scene. LoadSceneAsync expects a LoadSceneMode parameter, not a boolean.
  3. Final Answer:

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

    Additive mode loads scene without unloading = C [OK]
Hint: Use LoadScene with Additive mode to keep current scene [OK]
Common Mistakes:
  • Using Single mode which unloads current scene
  • Trying to unload instead of load
  • Passing incorrect parameters to LoadSceneAsync
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