DEV Community

Kiran Jodhani
Kiran Jodhani

Posted on

How to create Prefabs in Unity3D?

This short article explains what Unity's Prefabs are and what they are useful for.

Motivation

Let's imagine that we want to make a Tower Defence game in Unity. At first we would create a Tower GameObject, that would look something like this in the Hierarchy:

When the player starts the game, usually there are no Towers in the scene yet. What we need is a way to save our Tower GameObjects somewhere and then load them into the Hierarchy again as soon as the player wants to build a tower.

This is what Prefabs are for.

Creating a Prefab
Let's create a Prefab. It's very easy, all we have to do is drag our GameObject from the Hierarchy into the Project area like this:

Afterwards we can see the Prefab in our Project area:

Image description

Now we can delete the GameObject from our Hierarchy so it's not in the game world anymore. But since it's in the Project area, we don't lose it completely.

Loading a Prefab
If we want to load a prefab, we have two options. We can either do it manually by dragging it from the Project area into the Hierarchy area, or by using a script that calls Instantiate.

Here is an example script that loads a Prefab as soon as the game starts:

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {
public GameObject prefab = null;

void Start () {
    // instantiate the prefab
    // -> transform.position means that it will be
    //    instantiated at the position of *this*
    //    gameobject
    // -> quaternion.identity means that it will
    //    have the default rotation, hence its not
    //    rotated in any weird way
    Instantiate(prefab,
                transform.position,
                Quaternion.identity);
}
Enter fullscreen mode Exit fullscreen mode

}

Now all we have to do is add the Test script to a GameObject in the scene, take a look at the Inspector and then set the public prefab variable to any Prefab from our Project area like this:

After pressing start, it immediately loads our Tower Prefab into the scene.

Simple as that!

Top comments (0)