Bird
Raised Fist0
Unityframework~10 mins

Prefabs and reusable objects 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 instantiate a prefab in Unity.

Unity
GameObject newObject = Instantiate([1]);
Drag options to blanks, or click blank then click option'
AgameObject
Btransform
CVector3.zero
DmyPrefab
Attempts:
3 left
💡 Hint
Common Mistakes
Using a transform or position instead of the prefab variable.
2fill in blank
medium

Complete the code to set the position of the instantiated prefab.

Unity
GameObject newObject = Instantiate(myPrefab, [1], Quaternion.identity);
Drag options to blanks, or click blank then click option'
Atransform.position
Bnew Vector3(1, 1, 1)
CVector3.zero
DgameObject.transform
Attempts:
3 left
💡 Hint
Common Mistakes
Using a transform instead of a Vector3 position.
3fill in blank
hard

Fix the error in the code to properly instantiate a prefab with a parent transform.

Unity
GameObject newObject = Instantiate(myPrefab, [1], Quaternion.identity, parentTransform);
Drag options to blanks, or click blank then click option'
AVector3.zero
Btransform.position
CparentTransform.position
Dnew Vector3(0, 0, 0)
Attempts:
3 left
💡 Hint
Common Mistakes
Passing a Transform instead of a Vector3 for position.
4fill in blank
hard

Fill both blanks to create a dictionary of prefab names and their instances only if the prefab name length is greater than 3.

Unity
var instances = prefabs.Where(prefab => [2]).ToDictionary(prefab => [1], prefab => Instantiate(prefab));
Drag options to blanks, or click blank then click option'
Aprefab.name
Bprefab.name.Length > 3
Cprefab.Length > 3
Dprefab.name == "Player"
Attempts:
3 left
💡 Hint
Common Mistakes
Using prefab.Length which is invalid.
Using equality check instead of length comparison.
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that maps uppercase prefab names to their instances if the instance is active.

Unity
var activeInstances = prefabs.Where(prefab => [3]).ToDictionary(prefab => [1], prefab => [2]);
Drag options to blanks, or click blank then click option'
Aprefab.name.ToUpper()
BInstantiate(prefab)
CInstantiate(prefab).activeSelf
Dprefab.name
Attempts:
3 left
💡 Hint
Common Mistakes
Using the prefab name without uppercase.
Checking prefab instead of instance active state.

Practice

(1/5)
1. What is the main purpose of a prefab in Unity?
easy
A. To save a game object for reuse multiple times
B. To write scripts for game logic
C. To create animations for characters
D. To design user interface layouts

Solution

  1. Step 1: Understand prefab concept

    A prefab stores a game object with all its components and settings.
  2. Step 2: Identify prefab use

    Prefabs allow easy reuse of objects without recreating them from scratch.
  3. Final Answer:

    To save a game object for reuse multiple times -> Option A
  4. Quick Check:

    Prefab = reusable object [OK]
Hint: Prefabs store objects to reuse easily in your game [OK]
Common Mistakes:
  • Confusing prefabs with scripts
  • Thinking prefabs are only for animations
  • Believing prefabs are UI elements
2. Which of the following is the correct way to create a copy of a prefab in a Unity script?
easy
A. Clone(prefab);
B. Copy(prefab);
C. Duplicate(prefab);
D. Instantiate(prefab);

Solution

  1. Step 1: Recall Unity method for prefab copies

    Unity uses the Instantiate() method to create copies of objects.
  2. Step 2: Check method names

    Only Instantiate() is a valid Unity method for this purpose.
  3. Final Answer:

    Instantiate(prefab); -> Option D
  4. Quick Check:

    Instantiate() creates prefab copies [OK]
Hint: Use Instantiate() to copy prefabs in scripts [OK]
Common Mistakes:
  • Using Copy() which does not exist
  • Trying Clone() or Duplicate() which are invalid
  • Forgetting parentheses after Instantiate
3. What will be the output of this Unity C# code snippet?
public GameObject prefab;
void Start() {
    GameObject obj = Instantiate(prefab);
    Debug.Log(obj.name);
}
medium
A. The name of the prefab with "(Clone)" appended
B. The original prefab name without changes
C. An error because prefab is not assigned
D. Nothing is printed

Solution

  1. Step 1: Understand Instantiate behavior

    Instantiate creates a copy of the prefab and appends "(Clone)" to its name.
  2. Step 2: Analyze Debug.Log output

    Debug.Log prints the name of the new object, which includes "(Clone)".
  3. Final Answer:

    The name of the prefab with "(Clone)" appended -> Option A
  4. Quick Check:

    Instantiate adds "(Clone)" to name [OK]
Hint: Instantiate adds "(Clone)" to copied prefab names [OK]
Common Mistakes:
  • Expecting original prefab name without "(Clone)"
  • Assuming no output is printed
  • Forgetting prefab must be assigned in inspector
4. Identify the error in this Unity C# code that tries to instantiate a prefab:
public GameObject prefab;
void Start() {
    GameObject obj = Instantiate(prefab, new Vector3(0, 0, 0));
}
medium
A. Vector3 cannot be used as a position
B. prefab must be assigned in the inspector
C. Instantiate requires a rotation parameter when using position
D. Instantiate cannot be called in Start()

Solution

  1. Step 1: Check Instantiate method overloads

    Instantiate with position requires both position and rotation parameters.
  2. Step 2: Identify missing rotation argument

    The code misses the rotation argument, causing a compile error.
  3. Final Answer:

    Instantiate requires a rotation parameter when using position -> Option C
  4. Quick Check:

    Instantiate(position) needs rotation too [OK]
Hint: Instantiate with position needs rotation argument [OK]
Common Mistakes:
  • Omitting rotation parameter
  • Assuming Vector3 alone is enough
  • Thinking Instantiate can't be used in Start()
5. You want to create 5 copies of a prefab at different positions along the X-axis, spaced 2 units apart, in Unity. Which code snippet correctly does this?
hard
A. for (int i = 0; i < 5; i++) { Instantiate(prefab); prefab.transform.position = new Vector3(i * 2, 0, 0); }
B. for (int i = 0; i < 5; i++) { Instantiate(prefab, new Vector3(i * 2, 0, 0), Quaternion.identity); }
C. Instantiate(prefab, new Vector3(0, 0, 0), Quaternion.identity); Instantiate(prefab, new Vector3(1, 0, 0), Quaternion.identity); Instantiate(prefab, new Vector3(2, 0, 0), Quaternion.identity); Instantiate(prefab, new Vector3(3, 0, 0), Quaternion.identity); Instantiate(prefab, new Vector3(4, 0, 0), Quaternion.identity);
D. for (int i = 0; i < 5; i++) { prefab.transform.position = new Vector3(i * 2, 0, 0); Instantiate(prefab); }

Solution

  1. Step 1: Understand correct Instantiate usage with position

    Instantiate(prefab, position, rotation) creates a copy at the given position.
  2. Step 2: Check loop for multiple copies

    for (int i = 0; i < 5; i++) { Instantiate(prefab, new Vector3(i * 2, 0, 0), Quaternion.identity); } uses a loop to create 5 copies spaced by 2 units on X-axis correctly.
  3. Step 3: Identify errors in other options

    The loop that instantiates first then moves prefab results in clones at incorrect positions (0, 0, 2, 4, 6); the manual five Instantiate calls use 1-unit spacing (0,1,2,3,4) instead of 2 units and are repetitive; the loop that moves prefab before instantiating spawns all at (0,0,0) because no position parameter is passed.
  4. Final Answer:

    for (int i = 0; i < 5; i++) { Instantiate(prefab, new Vector3(i * 2, 0, 0), Quaternion.identity); } -> Option B
  5. Quick Check:

    Loop + Instantiate with position = multiple copies [OK]
Hint: Use loop with Instantiate(prefab, position, rotation) [OK]
Common Mistakes:
  • Changing prefab position instead of copy
  • Not providing rotation in Instantiate
  • Writing repetitive Instantiate calls instead of loop
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