我们今天要学的是UnityD中预设Prefab的使用方法,下面我们就具体的来看。
首先来了解一下预设:在Unity3D项目中,Prefabs(预设)是一种可被重复使用的游戏对象。具有以下特点:
1. 它可以被置入多个场景中,也可以在一个场景中多次置入。
2. 当你在一个场景中增加一个Prefabs,你就实例化了一个Prefabs。
3. 所有Prefabs实例都是Prefab的克隆,所以如果实在运行中生成对象会有(Clone)的标记。
4. 只要Prefabs原型发生改变,所有的Prefabs实例都会产生变化。
接下来创建预设Prefab,我们先在Project面板下新建一个文件夹“resources”,然后Create-->Prefab,重命名为“ball”,然后将Hierarchy下的ball对象拖拽到上面,可以发现它前面原本灰色的图标变蓝了。好了,最后让我们编写c#脚本代码,源代码如下:
[csharp] view plaincopy
using UnityEngine;
using System.Collections;
public class script : MonoBehaviour {
//定义小球预设
private GameObject prefab;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
//触发进入检测函数
void OnTriggerEnter(Collider col)
{
//注意此处第一个小球的名字为ball,而后来克隆的小球名字都为ball(Clone)
if (col.gameObject.name == "ball" || col.gameObject.name == "ball(Clone)")
{
//销毁小球
Destroy(col.gameObject);
}
//实例化小球预设,我们从resources文件夹下载入预设,注意预设资源必须放在
//Assets目录下新建的resource文件夹,否则不识别
prefab = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("ball"));
}
}
首先来了解一下预设:在Unity3D项目中,Prefabs(预设)是一种可被重复使用的游戏对象。具有以下特点:
1. 它可以被置入多个场景中,也可以在一个场景中多次置入。
2. 当你在一个场景中增加一个Prefabs,你就实例化了一个Prefabs。
3. 所有Prefabs实例都是Prefab的克隆,所以如果实在运行中生成对象会有(Clone)的标记。
4. 只要Prefabs原型发生改变,所有的Prefabs实例都会产生变化。
如果需要创建一些想要重复使用的东西,如游戏中的子弹等,就应该使用Prefab了。
下面介绍一下使用方法。
新建一个工程,我们取名"Test",然后新建一个平面Plane,一个长方体Cube,一个球体Sphere。如下图所示:
我们还要设置平面上的长方体的组件属性和小球的组件属性,分别如下所示:
接下来创建预设Prefab,我们先在Project面板下新建一个文件夹“resources”,然后Create-->Prefab,重命名为“ball”,然后将Hierarchy下的ball对象拖拽到上面,可以发现它前面原本灰色的图标变蓝了。好了,最后让我们编写c#脚本代码,源代码如下:
[csharp] view plaincopy
using UnityEngine;
using System.Collections;
public class script : MonoBehaviour {
//定义小球预设
private GameObject prefab;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
//触发进入检测函数
void OnTriggerEnter(Collider col)
{
//注意此处第一个小球的名字为ball,而后来克隆的小球名字都为ball(Clone)
if (col.gameObject.name == "ball" || col.gameObject.name == "ball(Clone)")
{
//销毁小球
Destroy(col.gameObject);
}
//实例化小球预设,我们从resources文件夹下载入预设,注意预设资源必须放在
//Assets目录下新建的resource文件夹,否则不识别
prefab = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("ball"));
}
}
将脚本拖放到cube对象上,运行游戏,效果如下: