码迷,mamicode.com
首页 > 编程语言 > 详细

unity3d之物体克隆

时间:2015-08-31 06:28:09      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:

  在游戏中,避免不了要大量使用某一个物体模型,比如说,子弹,敌人这样的模型。我们当然不想一个一个手动复制,而是想通过程序来控制他们的产生和消灭。unity3d在这方面做的很好,它通过预制体(prefab)来达到这样的目的,预制体,相当于一个工具套件一样,假如我们做好了一个带AI的敌人,那么我们要大量的使用复制这样的敌人,我们就需要把它封装成预制体(prefab),然后在程序中使用Instantiate函数来克隆物体,如果敌人的生命值耗尽,让它消失,只要调用gameobject.destroy就可以了。非常简单的使用逻辑,然而,有一些需要注意的地方,如果使用不当,可能会造成一些麻烦。举个栗子:

  我们要设置4秒钟出现一个敌人(敌人的AI脚本已经写好,是自动靠近玩家主动攻击的基本脚本),如果我们把prefab直接拿来做复制,那么,后果就是,第一次4秒到了,调用Instantiate,我们看到了第一个敌人,然而,第二次也就是8秒钟的时候,调用Instantiate,新出来了两个敌人,而不是一下子出来一个,第三次也就是12秒的时候调用Instantiate,一下子新出来了4个敌人,那么造成这个的原因,简单来讲,就是不能直接把instantiate脚本绑到prefab上,因为如果一旦调用这个脚本,那么产生的克隆物体将作为prefab的子物体,那么下一次调用的时候,上一次的子物体一起被克隆,就出来了2个,同理,再次调用,把前面克隆的子物体都包括进来,就是新出来了4个了。

  那么如何规避这样的问题呢?其实业界一个解决方案就是,设置空物体,用空物体绑定克隆脚本,然后克隆的脚本上关联prefab对象。那么这样就会达到一次复制一个的效果了。

unity3d之物体克隆

标签:

原文地址:http://www.cnblogs.com/pengsy/p/4772101.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!