Bird
Raised Fist0
Unityframework~10 mins

Tags and layers 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 assign the tag "Player" to a GameObject.

Unity
gameObject.tag = "[1]";
Drag options to blanks, or click blank then click option'
APlayer
BMainCamera
CUntagged
DEnemy
Attempts:
3 left
💡 Hint
Common Mistakes
Using a tag name that does not exist in the project.
Forgetting to use quotes around the tag name.
2fill in blank
medium

Complete the code to check if a GameObject has the tag "Enemy".

Unity
if (gameObject.[1]("Enemy")) {
    // Do something
}
Drag options to blanks, or click blank then click option'
AIsTag
BHasTag
CCheckTag
DCompareTag
Attempts:
3 left
💡 Hint
Common Mistakes
Using a method that does not exist like HasTag or CheckTag.
Comparing tags with == operator instead of CompareTag.
3fill in blank
hard

Fix the error in the code to get the layer number of a GameObject.

Unity
int layerNumber = gameObject.[1];
Drag options to blanks, or click blank then click option'
Alayer
BLayerName
CGetLayer()
DLayer
Attempts:
3 left
💡 Hint
Common Mistakes
Using a method instead of a property.
Using incorrect capitalization.
4fill in blank
hard

Fill both blanks to set a GameObject's layer to the layer number of the "UI" layer.

Unity
int uiLayer = LayerMask.[1]("UI");
gameObject.[2] = uiLayer;
Drag options to blanks, or click blank then click option'
ANameToLayer
Blayer
CLayer
DGetLayer
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect method names like GetLayer.
Trying to assign to a method instead of the layer property.
5fill in blank
hard

Fill all three blanks to create a LayerMask for the "Enemy" layer and check if a GameObject's layer is included.

Unity
LayerMask enemyMask = 1 << LayerMask.[1]("Enemy");
if ((enemyMask.value & (1 << gameObject.[2])) [3] 0) {
    // GameObject is on Enemy layer
}
Drag options to blanks, or click blank then click option'
ANameToLayer
Blayer
C!=
D==
Attempts:
3 left
💡 Hint
Common Mistakes
Using '==' instead of '!=' in the condition.
Not shifting 1 by the layer number.
Using incorrect method names.

Practice

(1/5)
1. What is the primary purpose of Tags in Unity?
easy
A. To identify and find GameObjects by name
B. To control the rendering order of objects
C. To group objects for physics collisions
D. To store numerical values for objects

Solution

  1. Step 1: Understand what Tags do

    Tags are used to label GameObjects with a name for easy identification.
  2. Step 2: Compare with Layers

    Layers group objects mainly for collision and rendering, not identification by name.
  3. Final Answer:

    To identify and find GameObjects by name -> Option A
  4. Quick Check:

    Tags = Identify objects by name [OK]
Hint: Tags name objects; layers group them for collisions [OK]
Common Mistakes:
  • Confusing tags with layers
  • Thinking tags control rendering
  • Assuming tags store numbers
2. Which of the following is the correct way to check if a GameObject has a specific tag in C# script?
easy
A. if (gameObject.CheckTag("Enemy"))
B. if (gameObject.tag == "Enemy")
C. if (gameObject.HasTag("Enemy"))
D. if (gameObject.layer == "Enemy")

Solution

  1. Step 1: Recall Unity tag checking syntax

    Unity uses gameObject.tag == "TagName" to check tags.
  2. Step 2: Identify incorrect options

    layer is an int, not string; HasTag and CheckTag are not Unity methods.
  3. Final Answer:

    if (gameObject.tag == "Enemy") -> Option B
  4. Quick Check:

    Check tag with .tag == "Name" [OK]
Hint: Use gameObject.tag == "TagName" to check tags [OK]
Common Mistakes:
  • Using layer property to check tags
  • Calling non-existent methods like HasTag
  • Comparing layer to string
3. Given this code snippet, what will be printed if the GameObject's layer is set to 8?
void Start() {
    if (gameObject.layer == 8) {
        Debug.Log("Layer is 8");
    } else {
        Debug.Log("Other layer");
    }
}
medium
A. Layer is 8
B. Other layer
C. Compile error
D. No output

Solution

  1. Step 1: Understand the layer property

    The layer property is an integer representing the object's layer number.
  2. Step 2: Check the condition

    If the GameObject's layer is 8, the condition gameObject.layer == 8 is true, so it prints "Layer is 8".
  3. Final Answer:

    Layer is 8 -> Option A
  4. Quick Check:

    Layer 8 matches condition, prints "Layer is 8" [OK]
Hint: Layer is an int; compare with number, not string [OK]
Common Mistakes:
  • Comparing layer to string instead of int
  • Assuming layer is a tag
  • Expecting compile errors from valid code
4. What is wrong with this code snippet?
void Update() {
    if (gameObject.tag = "Player") {
        Debug.Log("Player detected");
    }
}
medium
A. Tags cannot be compared in Update method
B. gameObject.tag is not accessible in Update
C. Debug.Log cannot be used inside if statements
D. Using assignment (=) instead of comparison (==) in if condition

Solution

  1. Step 1: Identify the if condition error

    The code uses = which assigns "Player" to gameObject.tag instead of comparing.
  2. Step 2: Understand correct comparison

    To compare, use == operator, so it should be gameObject.tag == "Player".
  3. Final Answer:

    Using assignment (=) instead of comparison (==) in if condition -> Option D
  4. Quick Check:

    Use == to compare tags, not = [OK]
Hint: Use == for comparison, not = assignment [OK]
Common Mistakes:
  • Using = instead of ==
  • Thinking Debug.Log can't be inside if
  • Believing tag is inaccessible in Update
5. You want to make sure your player GameObject only collides with enemies on a specific layer called "EnemyLayer". Which approach correctly uses layers to achieve this in Unity's physics settings?
hard
A. Assign all objects to Default layer and ignore collisions in script
B. Use tags to identify enemies and check collisions manually in code
C. Assign player to "PlayerLayer" and enemies to "EnemyLayer", then configure Layer Collision Matrix to allow collisions only between these layers
D. Set both player and enemies to the same layer and disable collisions globally

Solution

  1. Step 1: Understand layer collision matrix

    Unity's Layer Collision Matrix lets you control which layers collide with each other.
  2. Step 2: Assign layers and configure collisions

    Assign player and enemies to different layers and enable collision only between those layers in the matrix.
  3. Step 3: Evaluate other options

    Using tags for collision is inefficient; ignoring collisions or disabling globally is not selective.
  4. Final Answer:

    Assign player to "PlayerLayer" and enemies to "EnemyLayer", then configure Layer Collision Matrix to allow collisions only between these layers -> Option C
  5. Quick Check:

    Use layers + collision matrix for selective collisions [OK]
Hint: Use Layer Collision Matrix to control collisions by layers [OK]
Common Mistakes:
  • Using tags instead of layers for collision filtering
  • Assigning all objects to Default layer
  • Disabling collisions globally instead of selectively
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