Unity3D学习笔记03:预设Prefab的使用

       今天我们来学一下UnityD中预设Prefab的使用方法,首先来了解一下预设:Unity3D项目中,Prefabs(预设)是一种可被重复使用的游戏对象。具有以下特点:

        1.  它可以被置入多个场景中,也可以在一个场景中多次置入。

        2.  当你在一个场景中增加一个Prefabs,你就实例化了一个Prefabs。

        3.  所有Prefabs实例都是Prefab的克隆,所以如果实在运行中生成对象会有(Clone)的标记。

        4.  只要Prefabs原型发生改变,所有的Prefabs实例都会产生变化。

如果需要创建一些想要重复使用的东西,如游戏中的子弹等,就应该使用Prefab了。下面介绍一下使用方法。

       新建一个工程,我们取名"Test",然后新建一个平面Plane,一个长方体Cube,一个球体Sphere。如下图所示:

                 Unity3D学习笔记03:预设Prefab的使用_第1张图片

            我们要实现的效果是当小球落到平面上时,销毁小球,接着从小球的原始位置重新创建一个小球,使其下落,重复下去,使空中一直有小球下落。

           我们还要设置平面上的长方体的组件属性和小球的组件属性,分别如下所示:

                 Unity3D学习笔记03:预设Prefab的使用_第2张图片                Unity3D学习笔记03:预设Prefab的使用_第3张图片

         可以看到去掉了长方体Mesh Render组件的对勾,使其透明化,增加了Box Collider组件,使它接受碰撞,并在是否触发 Is Trigger上打了对勾;然后小球我们增加了重力感应组件Rigidbody,使其能够下落,然后增加了球体碰撞Sphere Collider。这里要注意的是碰撞双方不能都是Mesh Collider,否则检测不到碰撞。如果非要用两个Mesh Collider检测碰撞,则可勾选其中之一的Mesh Collider下的Convex属性。

        接下来创建预设Prefab,我们先在Project面板下新建一个文件夹“resources”,然后Create-->Prefab,重命名为“ball”,然后将Hierarchy下的ball对象拖拽到上面,可以发现它前面原本灰色的图标变蓝了。好了,最后让我们编写c#脚本代码,源代码如下:

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对象上,运行游戏,效果如下:

                

最后附上项目资源下载地址:点此下载


你可能感兴趣的:(unity3d,预设,prefab)