Bird
Raised Fist0
Unityframework~20 mins

Scene creation and management in Unity - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Scene Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Unity C# code when loading a scene?

Consider the following Unity C# script snippet that loads a scene asynchronously:

using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneLoader : MonoBehaviour {
    void Start() {
        SceneManager.LoadSceneAsync("Level2");
        Debug.Log("Scene loading started");
    }
}

What will be printed in the Unity Console when this script runs?

Unity
using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneLoader : MonoBehaviour {
    void Start() {
        SceneManager.LoadSceneAsync("Level2");
        Debug.Log("Scene loading started");
    }
}
ANo output because LoadSceneAsync is asynchronous
BScene loading started\nLevel2 scene loaded
CScene loading started
DError: Scene 'Level2' not found
Attempts:
2 left
💡 Hint

Remember that LoadSceneAsync starts loading but does not block the thread.

🧠 Conceptual
intermediate
1:30remaining
Which Unity method is used to add a scene to the current scenes without unloading others?

In Unity, you want to load a new scene but keep the current scene active and loaded. Which method should you use?

ASceneManager.LoadScene("NewScene", LoadSceneMode.Additive)
BSceneManager.LoadScene("NewScene")
CSceneManager.UnloadSceneAsync("CurrentScene")
DSceneManager.LoadSceneAsync("NewScene", LoadSceneMode.Single)
Attempts:
2 left
💡 Hint

Think about how to keep multiple scenes loaded at once.

🔧 Debug
advanced
2:30remaining
Why does this Unity code fail to unload a scene?

Examine the following code snippet:

using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneUnloader : MonoBehaviour {
    void Start() {
        SceneManager.UnloadSceneAsync("Level1");
        Debug.Log("Unload requested");
    }
}

After running, the scene "Level1" remains loaded. What is the most likely reason?

Unity
using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneUnloader : MonoBehaviour {
    void Start() {
        SceneManager.UnloadSceneAsync("Level1");
        Debug.Log("Unload requested");
    }
}
AUnloadSceneAsync requires a scene index, not a name
BUnloadSceneAsync only works in the editor, not in builds
CUnloadSceneAsync is synchronous and blocks until unload completes
DThe scene "Level1" is the active scene and cannot be unloaded until another scene is active
Attempts:
2 left
💡 Hint

Think about Unity's rules for unloading active scenes.

📝 Syntax
advanced
2:30remaining
Which code snippet correctly loads a scene and executes code after loading completes?

You want to load a scene asynchronously and then print "Scene loaded" only after the scene finishes loading. Which code snippet is correct?

A
SceneManager.LoadScene("Level3");
Debug.Log("Scene loaded");
B
var asyncOp = SceneManager.LoadSceneAsync("Level3");
asyncOp.completed += (op) => Debug.Log("Scene loaded");
C
SceneManager.LoadSceneAsync("Level3");
Debug.Log("Scene loaded");
D
var asyncOp = SceneManager.LoadSceneAsync("Level3");
asyncOp.isDone = true;
Debug.Log("Scene loaded");
Attempts:
2 left
💡 Hint

Look for how to detect completion of asynchronous loading.

🚀 Application
expert
3:00remaining
How many scenes are loaded after this code runs?

Given the following Unity C# code executed in a project with three scenes: "MainMenu", "Level1", and "Level2". Initially, only "MainMenu" is loaded and active.

using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneTest : MonoBehaviour {
    void Start() {
        SceneManager.LoadScene("Level1", LoadSceneMode.Additive);
        SceneManager.LoadSceneAsync("Level2", LoadSceneMode.Additive);
        SceneManager.UnloadSceneAsync("MainMenu");
    }
}

After all operations complete, how many scenes remain loaded?

Unity
using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneTest : MonoBehaviour {
    void Start() {
        SceneManager.LoadScene("Level1", LoadSceneMode.Additive);
        SceneManager.LoadSceneAsync("Level2", LoadSceneMode.Additive);
        SceneManager.UnloadSceneAsync("MainMenu");
    }
}
A3 scenes: MainMenu, Level1, and Level2
B2 scenes: Level1 and Level2
C1 scene: Level2 only
D2 scenes: MainMenu and Level1
Attempts:
2 left
💡 Hint

Consider the effect of additive loading and unloading asynchronously.

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