美文网首页
Unity优化 对象池的应用

Unity优化 对象池的应用

作者: LeoYangXD | 来源:发表于2016-12-21 01:09 被阅读135次

我们在做射击类的游戏的时候我们经常会用到子弹,我们对子弹的处理经常性的是先把它实例化出来,然后我们再让他移动进行攻击,当子弹到超出一定范围(时间)或者碰撞到某些东西的时候的时候我们就会把它给摧毁掉。然后这样一直实例,一直摧毁,在游戏刚开始的时候可能觉察不到,但是越到后边越卡。这就是因为实例和摧毁比较消耗性能。此时对待这种情况我们就可以用对象池。


Paste_Image.png

上图就是对象池的应用流程图,我们首先建一个对象池(声明一个List集合),然后估算我们在场景中最多会出现多少个子弹,然后我们就在这个集合中加入相应数量的子弹实例,刚开始子弹是隐藏的,等到我们用到的时候我们在把它setActive(true),然后对他的位置进行设置,当我们的子弹应用结束(在普通方法里就是要摧毁他的时候),我们再把他设置为False,回收对象。就这样一直循环。同时我们还要用一个下标以方便我们从对像池中取东西

Paste_Image.png

我们先声明一个对象池,并把下标也给初始化。

Paste_Image.png

通过这个方法向对象池里边加入相应数量的实例

Paste_Image.png

调用对象池里实例的时候,首先判断下标是否超出范围,当我们调用到实例的时候也要把下标给加1.

Paste_Image.png

当我们调用完以后再把他设置为隐藏。


我们注意这个图的右边,就是子弹一直在隐藏,显示之间转换。
比如我做的这个飞机小游戏,他可能子弹要升级,那子弹的模型可能就跟原来的子弹不一样,此时我们就需要多创建几个对象池,当飞机要切换子弹类型的时候,直接去切换对象池就可以了,不要在切换子弹的时候我们再给他创建对象池,这样可能会有点卡顿的现象。

相关文章

  • Unity优化 对象池的应用

    我们在做射击类的游戏的时候我们经常会用到子弹,我们对子弹的处理经常性的是先把它实例化出来,然后我们再让他移动进行攻...

  • Unity优化之对象池

  • Unity 学习笔记

    Unity 对象池实现方案:

  • Unity对象池

  • unity对象池

    在网上看见了对象池的一些应用,一直很好奇,所以来研究一下 对象池主要的用途就是在那些需要重复被创建和销毁的物体上可...

  • Unity——对象池

    前言 实现对象池的步骤 代码 该脚本可以添加到创建的空物体身上,注意游戏场景中必须要有带有碰撞器的对象存在,不然,...

  • [Unity]对象池

    对象池的作用 避免一直重复的创建和销毁某个对象,增加消耗 理解 就是在开辟一个地方,去储存会大量实例化和销毁的对象...

  • Unity 对象池

    最近在学习 Unity 官方的 《Tower Defense Template》[https://unity3d....

  • Unity 类对象池资源池对象池

    类对象池 包含创建对象池,取对象池中的内容,回收。 对象管理类 因为使用加载AB包的时候可能会频繁创建类,但是ne...

  • 对象池

    UGUI 中使用的对象池 在 C:\Files\Unity\Projects\UGUITest\PackageSo...

网友评论

      本文标题:Unity优化 对象池的应用

      本文链接:https://www.haomeiwen.com/subject/mwnfvttx.html