化浆池是什么东西_高级开发人员都会的技术---对象池技术

在游戏行业,我们如果想要混的更好,就必须要不断的学习,提升自己的实力,这样我们的能力才能得到体现,工资才会涨。那么我们从初级到中级乃至后面的高级甚至是主程,所需要具备对应的不同能力,那么我们从最基础的初级开发人员要过渡到中级开发人员,所需要具备的东西有很多,那么对象池技术就是这其中一种,是优化手段的一种。大家都知道我们玩游戏,就是享受玩的乐趣,体验,那么一款游戏如果让人体验很差,就不能算一款好的游戏,所以我们需要把我们的游戏优化到极致。如果可能的话。让用户体验极好,那么这才是我们作为游戏开发人员的成就。废话不多说,直接进入主题。

那么什么是对象池技术呢?百度上也有说,那么在这里我说下我个人的理解:对于游戏中需要反复利用或者生成,销毁的游戏物体,我们如果直接就创建或者销毁,那么会产生内存碎片,久而久之,我们的游戏性能就会下降,那么我们是不是可以弄一个容器,把需要的销毁的游戏物体放进这个容器,然后当需要用到这种游戏物体的时候,我们再从容器里面拿出来,这样就不用重新创建了,就节约了内存资源。这是我个人对对象池技术的理解。那么哪些地方需要用到对象池技术呢?比如我们的FPS游戏里面的子弹,敌人,就可以做成对象池。那么我们怎么做对象池呢?很多人都说用链表做对象池,一个生成池,一个死亡池。这样可以的,我们不仅可以用链表,队列,字典都可以实现。那么今天我给大家带来的是队列对象池。在这之前你需要会使用最基本的设计模式---单例模式。

首先进入unity创建场景,然后我们已飞机大战为背景,那么我们今天做的就是子弹的对象池。先把准备工作做好,飞机的制作,子弹预制体的制作,滚动背景的制作等等。然后在飞机上挂载一个对象池脚本,一个发射子弹脚本。如图:

8f1225718b716b9319c5d96a0b1f1240.png

然后我们编写对象池脚本,飞机发射子弹的很简单,就用一个unity自带的延时函数就可以了。对象池脚本内容如图:

dcc1f08638076e204345011248d70692.png
169375c509c2fa2b337fff41f275c70a.png

这样我们的对象池的功能算是写完了,那么怎么用它呢?我们只要在飞机发射子弹的时候,不用寻常的实例化函数,用我们对象池的生成方法就可以了,上图:

9755fb4ab517eabe444d24bcb2bbb819.png

然后销毁子弹我们不要用destroy,我们也用对象池专门的”销毁”方法。如图:

fe1b282db06a4488bbffb6ee60d392a3.png

然后我们可以看到,不管你发射多久子弹,它依旧是那几颗子弹轮流使用,如图:

9fbf8bf73e54c81e85c10f2dc309438c.png

大家可以自己复制我的代码尝试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值