unity3d之物体克隆

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

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

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

相关文章
相关标签/搜索