Bird
Raised Fist0
Unityframework~10 mins

NavMesh baking in Unity - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to start baking the NavMesh in Unity.

Unity
NavMeshSurface surface = GetComponent<NavMeshSurface>();
surface.[1]();
Drag options to blanks, or click blank then click option'
ABuildNavMesh
BGenerateNavMesh
CStartBake
DBake
Attempts:
3 left
💡 Hint
Common Mistakes
Using BuildNavMesh() which does not exist on NavMeshSurface.
Trying to call GenerateNavMesh() which is not a valid method.
2fill in blank
medium

Complete the code to assign the NavMeshSurface component before baking.

Unity
NavMeshSurface surface = [1]<NavMeshSurface>();
surface.Bake();
Drag options to blanks, or click blank then click option'
AGetComponent
BFindObjectOfType
CAddComponent
DGetNavMeshSurface
Attempts:
3 left
💡 Hint
Common Mistakes
Using FindObjectOfType which searches the whole scene instead of the current GameObject.
Using AddComponent which adds a new component instead of getting an existing one.
3fill in blank
hard

Fix the error in the code to bake the NavMesh asynchronously.

Unity
NavMeshSurface surface = GetComponent<NavMeshSurface>();
var bakeOperation = surface.[1]();
await bakeOperation;
Drag options to blanks, or click blank then click option'
ABakeAsync
BBake
CStartBake
DBuildNavMesh
Attempts:
3 left
💡 Hint
Common Mistakes
Using Bake() which is synchronous and does not return an awaitable.
Using StartBake() which is not a valid method.
4fill in blank
hard

Fill both blanks to create a list of NavMesh build sources filtered by area type.

Unity
var sources = NavMeshBuilder.[1](transform, LayerMask.GetMask("Walkable"));
var filtered = sources.Where(s => s.area == [2]).ToList();
Drag options to blanks, or click blank then click option'
ABuildSources
BCollectSources
CGatherSources
DGetSources
E1
F0
G2
H3
Attempts:
3 left
💡 Hint
Common Mistakes
Using BuildSources or GatherSources which do not exist.
Using the wrong area number which filters out all sources.
5fill in blank
hard

Fill all three blanks to bake a NavMesh with custom build settings and sources.

Unity
NavMeshBuildSettings settings = NavMesh.GetSettingsByID([1]);
List<NavMeshBuildSource> sources = NavMeshBuilder.CollectSources(transform, LayerMask.GetMask("[2]"));
NavMeshData data = NavMeshBuilder.BuildNavMeshData(settings, sources, [3], transform.position, transform.rotation);
NavMesh.AddNavMeshData(data);
Drag options to blanks, or click blank then click option'
A1
BWalkable
Cnew Bounds(Vector3.zero, new Vector3(50, 50, 50))
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong settings ID which causes errors.
Using incorrect layer mask string.
Not defining bounds properly causing no NavMesh to bake.

Practice

(1/5)
1. What is the main purpose of NavMesh baking in Unity?
easy
A. To create a walkable map for characters to navigate
B. To add textures to 3D models
C. To animate characters automatically
D. To generate sound effects for the environment

Solution

  1. Step 1: Understand NavMesh baking concept

    NavMesh baking generates a navigation mesh that defines where characters can walk.
  2. Step 2: Identify the purpose from options

    Only To create a walkable map for characters to navigate describes creating a walkable map, which matches NavMesh baking.
  3. Final Answer:

    To create a walkable map for characters to navigate -> Option A
  4. Quick Check:

    NavMesh baking = walkable map creation [OK]
Hint: NavMesh baking = making paths for characters [OK]
Common Mistakes:
  • Confusing NavMesh baking with animation
  • Thinking it adds textures
  • Assuming it creates sounds
2. Which of the following is the correct way to start baking a NavMesh using the NavMeshSurface component in a script?
easy
A. navMeshSurface.Bake();
B. navMeshSurface.StartBake();
C. navMeshSurface.GenerateNavMesh();
D. navMeshSurface.CreateMesh();

Solution

  1. Step 1: Recall NavMeshSurface API method

    The official method to bake NavMesh in script is Bake().
  2. Step 2: Match method names with options

    Only navMeshSurface.Bake(); uses Bake(), others are incorrect or non-existent.
  3. Final Answer:

    navMeshSurface.Bake(); -> Option A
  4. Quick Check:

    NavMeshSurface baking method = Bake() [OK]
Hint: Use Bake() method to bake NavMesh in scripts [OK]
Common Mistakes:
  • Using non-existent methods like StartBake()
  • Confusing with GenerateNavMesh() or CreateMesh()
  • Forgetting to call Bake() after setup
3. Consider this code snippet in Unity:
using UnityEngine;
using UnityEngine.AI;

public class BakeNavMesh : MonoBehaviour {
    public NavMeshSurface surface;
    void Start() {
        surface.BuildNavMesh();
        Debug.Log("NavMesh baked");
    }
}
What will be the output when this script runs?
medium
A. NavMesh baked
B. Error: BuildNavMesh() does not exist
C. No output, script does nothing
D. NavMesh baking failed

Solution

  1. Step 1: Check NavMeshSurface API

    NavMeshSurface does not have BuildNavMesh(); the correct method is Bake(). This causes a compilation error.
  2. Step 2: Analyze execution

    The invalid method call prevents compilation, so no Debug.Log executes and an error occurs.
  3. Final Answer:

    Error: BuildNavMesh() does not exist -> Option B
  4. Quick Check:

    NavMeshSurface.Bake() exists, BuildNavMesh() does not [OK]
Hint: NavMeshSurface uses Bake(), not BuildNavMesh() [OK]
Common Mistakes:
  • Thinking BuildNavMesh() is valid
  • Expecting 'NavMesh baked' log output
  • Confusing BuildNavMesh() with Bake()
4. You wrote this code to bake a NavMesh but it does not work:
public NavMeshSurface surface;
void Start() {
    surface.BakeNavMesh();
}
What is the error and how to fix it?
medium
A. NavMeshSurface cannot bake at runtime
B. NavMeshSurface must be initialized with new keyword
C. Method name is wrong; use surface.Bake() instead
D. BakeNavMesh() needs parameters to work

Solution

  1. Step 1: Identify incorrect method call

    NavMeshSurface does not have BakeNavMesh() method; correct is Bake().
  2. Step 2: Correct method usage

    Replace surface.BakeNavMesh() with surface.Bake() to bake NavMesh properly.
  3. Final Answer:

    Method name is wrong; use surface.Bake() instead -> Option C
  4. Quick Check:

    Correct method = Bake() [OK]
Hint: Use Bake(), not BakeNavMesh(), to bake NavMesh [OK]
Common Mistakes:
  • Calling non-existent BakeNavMesh() method
  • Trying to create NavMeshSurface with new keyword
  • Assuming Bake needs parameters
5. You want to bake a NavMesh only on specific layers to optimize performance. Which approach should you use in Unity?
hard
A. Bake the entire scene and disable obstacles on unwanted layers
B. Manually delete unwanted NavMesh areas after baking
C. Use a separate NavMeshSurface for each layer but bake all layers together
D. Set the NavMeshSurface's LayerMask to include only desired layers before baking

Solution

  1. Step 1: Understand LayerMask usage in NavMeshSurface

    NavMeshSurface has a LayerMask property to select which layers to include in baking.
  2. Step 2: Choose the best optimization method

    Setting LayerMask before baking limits NavMesh to needed layers, improving performance.
  3. Final Answer:

    Set the NavMeshSurface's LayerMask to include only desired layers before baking -> Option D
  4. Quick Check:

    LayerMask filters layers during baking [OK]
Hint: Use LayerMask on NavMeshSurface to bake specific layers [OK]
Common Mistakes:
  • Deleting NavMesh areas manually after baking
  • Baking whole scene without filtering layers
  • Using multiple surfaces but baking all layers at once
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