![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=1739671000-MJEcS4cf6C8JFPAPOBmEIFz6m7E2jmHq-0-fe486255dd4c6c1dfa7e67a47dc687a0)
图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=1739671000-e9ZTAYmwsautBUX10Rc2jYgxAgoUxMg1-0-9e6d9ac550af53ba3edf508888a2a779)
图1-31 实例化预设
![](https://epubservercos.yuewen.com/FABC1B/6158700004756901/epubprivate/OEBPS/Images/figure_0033_0002.jpg?sign=1739671000-mk8dDpQ7EtAx0tOHje8O7If9D859wGuw-0-dd8b66a021c3669ff00a1299b9797104)
图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=1739671000-uV8Cv4Mq91Q2kPQMtFC2UEzfD2Wmit57-0-9350c8f2c9bb41fd642b5de60b38500d)
图1-33 将项目面板中的预设赋给脚本的prefab属性
![](https://epubservercos.yuewen.com/FABC1B/6158700004756901/epubprivate/OEBPS/Images/figure_0035_0001.jpg?sign=1739671000-zrgVe6o9ZIPKPdJE0xKy32OE68XXziKM-0-04b3514206a44fb096b538525e682182)
图1-34 运行游戏,可以看到随机创建的立方体