Unity简易缓存池实现及演示

本文介绍了Unity中缓存池的实现方法,包括预加载、使用和回收三个步骤。通过预估对象需求,预先加载一定数量的对象,使用时从缓存池获取或在无剩余时动态加载,使用完毕后回收到池中。通过子弹发射的模拟展示了缓存池的效果,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

关于缓存池的概念这里不多赘述,不懂的请自行百度(😜)

先说下我的思路,主要分3步(1:预加载,2:拿来用,3:回收不用的)

一 预加载:

就是根据自己的情况预估一下要使用的对象的大致个数,先预加载一些;

二 拿来用:

这里主要有两种情况,一种是缓存池还有剩余,就从里面直接拿出来用,第二种是缓存池所有对象都已经被使用了,这时需要重新预估,加载新的对象来用;

三 回收:

当对象使用完毕,我们不直接销毁对象,而是将它重新放入缓存池,以备下次使用

其他:缓存池清理的一些逻辑

完成后我用子弹发射简单模拟了一下,效果如图:↓

代码如下:

缓存池主逻辑:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PoolManager : MonoBehaviour
{
    //单例
    static PoolManager _poolMgr = null;
    public static PoolManager PoolMgr
    {
        get
        {
            if (_poolMgr == null)
            {
                _poolMgr = new PoolManager();
            }
            return _poolMgr;
        }

    }

    

    //缓存表(key,缓存对象列表)
    Dictionary<string, List<GameObject>> _poolList = new Dictionary<string, List<GameObject>>();


    private void Awake()
    {
        _poolMgr = this;
    }

    //根据信息创建一个新的缓存池(key,源,默认创建个数)
    public void CreateNewObjList(string key,GameObject obj,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值