0
0
Unityframework~20 mins

Tags and layers in Unity - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Master of Tags and Layers
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 using tags?
Consider this Unity C# script attached to a GameObject. What will be printed in the console when the game starts?
Unity
using UnityEngine;

public class TagCheck : MonoBehaviour {
    void Start() {
        if (gameObject.CompareTag("Player")) {
            Debug.Log("This is the player.");
        } else {
            Debug.Log("Not the player.");
        }
    }
}
ANot the player.
BThis is the player.
CNo output, script does nothing.
DRuntime error: Tag not found.
Attempts:
2 left
💡 Hint
Check the tag assigned to the GameObject in the Unity Editor.
Predict Output
intermediate
2:00remaining
What layer mask value is created by this code?
In Unity C#, what integer value does this LayerMask represent?
Unity
int layerMask = (1 << LayerMask.NameToLayer("Enemy")) | (1 << LayerMask.NameToLayer("Obstacle"));
Debug.Log(layerMask);
AAlways 0, because NameToLayer returns -1 if layer not found
BA number with bits set for both Enemy and Obstacle layers, e.g., 18
CA random number depending on frame rate
DA syntax error, code won't compile
Attempts:
2 left
💡 Hint
LayerMask.NameToLayer returns the layer index; shifting 1 by that index sets the bit.
🔧 Debug
advanced
2:00remaining
Why does this Unity script fail to detect the correct layer?
This script is supposed to detect if the collided object is on the "Enemy" layer. Why does it always print "Not enemy layer"?
Unity
void OnCollisionEnter(Collision collision) {
    if (collision.gameObject.layer == LayerMask.GetMask("Enemy")) {
        Debug.Log("Enemy layer detected");
    } else {
        Debug.Log("Not enemy layer");
    }
}
ALayerMask.GetMask returns a bitmask, not a layer index, so comparison fails
Bcollision.gameObject.layer is always zero, so condition never true
COnCollisionEnter is never called because collider is missing
DThe script has a syntax error in the if statement
Attempts:
2 left
💡 Hint
Check what LayerMask.GetMask returns versus gameObject.layer value.
🧠 Conceptual
advanced
2:00remaining
How does Unity use layers to optimize physics collisions?
Which statement best describes how Unity uses layers to control physics collision checks?
ALayers assign tags to GameObjects for identification
BLayers determine the order in which Update() is called on scripts
CUnity uses a collision matrix where layers can be set to ignore collisions with other layers
DLayers automatically disable rendering for objects not in the camera's view
Attempts:
2 left
💡 Hint
Think about how Unity can skip unnecessary collision checks.
Predict Output
expert
3:00remaining
What is the output of this Unity C# code using tags and layers?
Given this code snippet, what will be printed in the console when the game starts?
Unity
using UnityEngine;

public class TagLayerTest : MonoBehaviour {
    void Start() {
        int enemyLayer = LayerMask.NameToLayer("Enemy");
        if (gameObject.layer == enemyLayer && gameObject.CompareTag("Enemy")) {
            Debug.Log("Enemy object detected.");
        } else if (gameObject.layer == enemyLayer) {
            Debug.Log("Enemy layer but wrong tag.");
        } else if (gameObject.CompareTag("Enemy")) {
            Debug.Log("Enemy tag but wrong layer.");
        } else {
            Debug.Log("Not enemy.");
        }
    }
}
AEnemy object detected.
BEnemy layer but wrong tag.
CEnemy tag but wrong layer.
DNot enemy.
Attempts:
2 left
💡 Hint
Check the GameObject's tag and layer in the Unity Editor before running.