Unity框架学习【对象池框架】{基本的对象池框架思维,个人使用对象池的总结}

本文探讨Unity游戏开发中的对象池框架,阐述其在节省内存、提高性能方面的作用。通过实例说明,如何利用对象池管理子弹等重复使用的对象,减少实例化与销毁带来的开销。文中介绍了对象池的基本结构,包括字典存储、泛型设计以及利用里氏转换原则实现的基类和子类管理机制。
摘要由CSDN通过智能技术生成

接着上面的单例模式,接下来我们要写的是 【对象池】

对象池的好处有什么?当一个物品你要多次使用的时候,对象池是你最好的伙伴,
我们只需要将重复使用的东西,放进一个对象的池子,当你需要的使用的时候重复使用就好。

举个例子,如果我的每一发子弹都需要生成一个实例对象。那么占用内存很大。
但如果我先提前制作十颗子弹,而且子弹在射出一秒内会回到对象池,那么只要我一秒少于10枪。
那么我就只需要用这十颗子弹就可以一直循环使用了。

下面是对象池模式的原理跟思维

首先我们需要

  1. 一个字典<复用对象名字,复用数据类型> 作为对象池的储存地方。
  2. 泛型,为了保持对象池的通用。
  3. 取出 <复用对象>的方法,这样子来方便调用 字典 中的数据
  4. 存取<复用对象>的方法,这样我们也可以方便把数据放回字典当中

//在这里还运用了额外的 《里氏转换原则》
//制作一个基类,然后子类当作复用数据来进行存储,很妙
//而且同时,由于这个改动,使得我们将我们的方法改到了这个数据类型里面
//我们取出 和 存入,都将放在这个 Pool 里面的数据对象 里面

public class PoolData
{
   //池子容器
    //抽屉中挂在的父结点
    public GameObject fatherObj;
    //对象的容器
    public List<GameObject> poolList;//用这个list来存放对象池物体
    public PoolData(GameObject obj, GameObject poolObj)//应该放到Pool下面来存放物体
    {
   
        //创建一个父对象 作为pool对象的子物体
        fatherObj = new GameObject(obj.name);
        fatherObj.transform.parent = poolObj.transform;//而父对象又在我们的大对象池里面

        poolList = new List<GameObject>() {
    obj };//在构造函数的时候,自动压入一个人对象
        obj.transform.parent = fatherObj.transform;//设置这个对象为List的子类
        obj.SetActive(false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值