![Unity3D网络游戏实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/295/847295/b_847295.jpg)
1.6 预设
Prefabs(预设)是一种可被重复使用的游戏对象,比如坦克游戏中的炮弹都源自一个炮弹模型的Prefabs(预设),当坦克发射炮弹时,就从Prefabs中实例化一个炮弹出来。总之如果要创建一些重复使用的东西,那么就该用到它了。
1.6.1 制作预设
只要在场景中制作了游戏对象,然后将它从层次面板拖曳到项目面板中,预设即被创建了(如图1-30所示),同时该对象在层次面板中也变成了蓝色,它成为了预设的一个实例化对象。
![](https://epubservercos.yuewen.com/FABC1B/6158700004756901/epubprivate/OEBPS/Images/figure_0032_0001.jpg?sign=1739138389-fb658IagvZ0eCPIod0dSzDWmpAVQlEsn-0-9bafac5854aa921e165194ff2ef908dc)
图1-30 预设
1.6.2 预设的实例化
如图1-31所示,将预设拖曳到场景面板中(或者在代码中使用Instantiate方法,1.6.4节会有介绍),便可实例化预设。实例化的对象(即拖曳出来的物体,包括之前创建的)依赖于预设,修改完预设后,实例化对象也随之被修改(如图1-32所示),删除预设后,这些实例化对象也会失效。
![](https://epubservercos.yuewen.com/FABC1B/6158700004756901/epubprivate/OEBPS/Images/figure_0033_0001.jpg?sign=1739138389-DOmfQ6UuscTE4LF9u9Ag7Nx5aEWm8YVd-0-2eb887862d3966f9adbe803da37a6e2f)
图1-31 实例化预设
![](https://epubservercos.yuewen.com/FABC1B/6158700004756901/epubprivate/OEBPS/Images/figure_0033_0002.jpg?sign=1739138389-hq3p5P6nYFuzfxPnvkLAmdaSL6tJPNJR-0-5250cd676d5c289a0fd5516c29bef3c9)
图1-32 修改预设
1.6.3 使用预设的例子
本节将以一个用代码生成立方体的例子来说明预设的用途。创建一个名为PrefabCreate.cs的脚本,定义GameObject类型的变量prefab,用它指向图1-30中的方块。然后在Update方法中调用Instantiate方法创建一个实例,代码如下所示。
1)Instantiate方法有3个参数,第一个是需要实例化的预设,后两个是实例化之后游戏对象的位置和旋转角度。
2)Random.Range将产生一定范围内的随机数,这里用3个-10到10的随机数作为方块的位置
3)Quaternion.identity就是指Quaternion(0,0,0,0),即各个轴向的旋转角度都是0。
using UnityEngine; using System.Collections; public class PrefabCreate : MonoBehaviour { public GameObject prefab; void Update() { //位置 float x = Random.Range(-10, 10); float y = Random.Range(-10, 10); float z = Random.Range(-10, 10); Vector3 pos = new Vector3(x, y, z); //实例化 Instantiate(prefab, pos, Quaternion.identity); } }
将脚本附加到场景面板中的任意一个物体上面,然后将项目面板中的预设赋给prefab属性(将预设拖曳到脚本prefab属性上,如图1-33所示)。运行游戏,如图1-34所示,立方体将被逐一创建。
![](https://epubservercos.yuewen.com/FABC1B/6158700004756901/epubprivate/OEBPS/Images/figure_0034_0001.jpg?sign=1739138389-8zziSYaQxyY8i17THDWl7VzoW4888k5u-0-e808b92cec2da750c8b48e488ddd57bc)
图1-33 将项目面板中的预设赋给脚本的prefab属性
![](https://epubservercos.yuewen.com/FABC1B/6158700004756901/epubprivate/OEBPS/Images/figure_0035_0001.jpg?sign=1739138389-V6iaHVsp4l3YfUx7vEwVKhuXrhmS2P07-0-9be00f2892145dc7de5b2a4c752938a5)
图1-34 运行游戏,可以看到随机创建的立方体