【Unity3D】Unity的预制体

一、前言

这篇短文解释了什么是Unity的预制体和它们的用处

二、用途

让我们想象一下,我们想在Unity中做一个塔防游戏。首先,我们创建一个Tower GameObject,它在层次结构中如下所示:
【Unity3D】Unity的预制体_第1张图片
当玩家开始游戏时,通常场景中还没有塔。我们需要的是一种方法,将我们的塔游戏对象保存到某个地方,然后当玩家想要建造一个塔时,将它们再次加载到层次结构中。

这就是预制体的用途。

三、创建预制体

让我们创建一个预制件。非常简单,我们所要做的就是将GameObject从层次结构中拖到Project区域中,如下所示:

【Unity3D】Unity的预制体_第2张图片
之后,我们可以在我们的项目区看到预制件:

.【Unity3D】Unity的预制体_第3张图片
现在我们可以从层次结构中删除GameObject,这样它就不在游戏世界中了。但由于它在项目区域,我们不会完全失去它。

四、加载预制体

如果我们想装载预制件,我们有两个选择。我们可以手动地将它从ProjectArea拖到层次结构区域,或者使用调用实例化.

下面是一个示例脚本,游戏一开始就加载Prefab:

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);
    }
}

现在我们要做的就是将测试脚本添加到场景中的GameObject中,查看Inspector,然后将public prefab变量设置为来自我们项目区域的任何prefab,如下所示:

【Unity3D】Unity的预制体_第4张图片
按下Play后,它立即将我们的塔预置体加载到游戏场景。

就这么简单!

你可能感兴趣的:(#,Unity3D日常开发,Unity3d)