unity3d prefab使用
今天,我们将深入学习 Unity3D 中预设(Prefab)的使用方法。
预设(Prefab)概述
在 Unity3D 项目里,预设(Prefabs)是一种极为实用的可重复使用的游戏对象,它具备以下显著特点:
- 多场景复用:预设可以被放置到多个不同的场景中,同时也能在同一个场景里多次使用。
- 实例化机制:当你在一个场景中添加一个预设时,实际上是对该预设进行了实例化操作,从而创建出一个预设的实例。
- 克隆标记:所有预设的实例都是预设原型的克隆体。在运行时生成的对象,其名称后面会带有
(Clone)标记。 - 同步更新:一旦预设原型发生任何改变,所有基于该预设创建的实例都会相应地产生变化。
如果在开发过程中需要创建一些需要重复使用的对象,例如游戏中的子弹等,那么使用预设是一个非常明智的选择。
预设使用示例
项目准备
首先,新建一个名为 “Test” 的 Unity3D 工程。接着,在场景中创建一个平面(Plane)、一个长方体(Cube)和一个球体(Sphere)。
实现效果
我们要实现的效果是:当小球落到平面上时,将小球销毁,然后从小球的原始位置重新创建一个小球,使其继续下落,如此循环,保证空中始终有小球在下落。
组件属性设置
我们需要分别设置平面上长方体和小球的组件属性:
- 长方体:去掉长方体的 Mesh Render 组件的勾选,使其变为透明。同时,添加 Box Collider 组件,使其能够接受碰撞,并勾选 “Is Trigger” 属性。
- 小球:为小球添加重力感应组件 Rigidbody,让小球能够在重力作用下下落。此外,添加球体碰撞组件 Sphere Collider。需要特别注意的是,碰撞双方不能都使用 Mesh Collider,否则无法检测到碰撞。如果非要使用两个 Mesh Collider 进行碰撞检测,则需要勾选其中一个 Mesh Collider 的 “Convex” 属性。
创建预设
接下来,我们开始创建预设(Prefab)。具体步骤如下:
- 在 Project 面板下新建一个名为 “resources” 的文件夹。
- 选择 “Create” -> “Prefab”,并将其重命名为 “ball”。
- 将 Hierarchy 面板下的球体对象(ball)拖拽到新创建的 “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 中预设的基本概念、创建方法以及如何使用脚本来实现预设的动态管理。希望这个示例能帮助你更好地理解和运用预设功能。