打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Prefabs(预设)与 Instantiate(实例化)
 Prefabs在unity3d中用的比较多,怎么理解这个东西呢?我把它当作是一个在代码未运行就创建好的一个物体,我们可以在代码里重复引用它,这样相当于实现了物体的多用(与我们写代码的重用很相识哟)。  首先新创建一个预设 (注意颜色是灰色的)

  然后我新建一个物体

将Cube物体拖到刚才新建的预设上,结果如图:

预设变成了蓝色了,我们把创建的物体删掉。
然后新建一个C#脚本。写入下面代码
  1. public GameObject obj; //传入的预设

  2.     // Use this for initialization
  3.     void Start () {
  4.         //参数一:是预设 参数二:实例化预设的坐标  参数三:实例化预设的旋转角度
  5.         GameObject instance = (GameObject)Instantiate(obj, transform.position, transform.rotation);
  6.         //这里 transform.position,transform.rotation分别代表的是相机和坐标和 旋转角度
  7.     }
  8.    
  9.     // Update is called once per frame
  10.     void Update () {
  11.       
  12.     }
复制代码
把该脚本添加到相机上面,上面的脚本需要传入一个GameObject,其实这个就是我们新建的预设,把它拖入脚本的参数里面就可以了。

点击运行后,就会生成一个Cubeprefab的预设的立方体。
还有一种方式,在代码里用Resource.Load()来加载实例化预设,前提是预设预提必须放在Assets/Resources的目录下。当然你也可以在 Assets/Resources/MyPrefabs。
代码:
  1. // Use this for initialization
  2.     void Start () {
  3.         //参数一:是预设 参数二:实例化预设的坐标  参数三:实例化预设的旋转角度
  4.         GameObject instance = (GameObject)Instantiate(Resources.Load("Cubeprefab"), transform.position, transform.rotation);
  5.         //这里 transform.position,transform.rotation分别代表的是相机和坐标和 旋转角度
  6.     }
  7.    
  8.     // Update is called once per frame
  9.     void Update () {
  10.       
  11.     }
复制代码
后面这种方式比较灵活运用。比如我在玩一个游戏的时候,我想退出游戏,服务器或本地的数据文件其实就存入了当前角色的坐标和一些其他信息,当下次登录游戏的时候,就直接从服务或本地数据文件读取这些信息并使用预设来实例化物体,然后呈现在我们眼前。

来源:http://www.cnblogs.com/cindyOne/archive/2013/04/24/3041416.html

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
[Unity3D]预设Prefab与实例Instantiate的基本使用
Unity3D入门 第叁章:Prefabs(预设)与 Instantiate(实例化)
【关于unity对象池的用法(话痨版)(c#)】
Unity3D游戏开发之使用AssetBundle和Xml实现场景的动态加载 | 秦元培
Unity 3D中的内存管理
Unity3D研究院之利用缓存池解决Instantiate慢的问题(七十三) | 雨松MOMO程序研究院
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服