![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=1739308991-bx6yoLRwLXFUCA0ptHAP2skimOYtPPRm-0-ef5a016183214d6d1b61dc1bba077f48)
图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=1739308991-PLmrKrfdFsav5MrZOJ6iKcXyi8D9Y8Hm-0-6d5732d8e1dca98531fd55c3cf38f1da)
图1-31 实例化预设
![](https://epubservercos.yuewen.com/FABC1B/6158700004756901/epubprivate/OEBPS/Images/figure_0033_0002.jpg?sign=1739308991-4ErxBDeoW4fouSkc0FpIDlyVF8hioaTU-0-635b271a415b8db7f5a5ffb603639532)
图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=1739308991-AqYyJSaR6dQefDjaxtxfliUXUrHCwqA9-0-c4bdf0267b1e4d3c7b7009d759fe0bc7)
图1-33 将项目面板中的预设赋给脚本的prefab属性
![](https://epubservercos.yuewen.com/FABC1B/6158700004756901/epubprivate/OEBPS/Images/figure_0035_0001.jpg?sign=1739308991-zaXSPR81HvbMSB7Aq9HVcn6i5ZnWJukK-0-c0c1fbcbab566b5ac4407b6e6661c72e)
图1-34 运行游戏,可以看到随机创建的立方体