资源池管理插件PoolManager

SpawnPool,游戏物体对象池总池,总池下面有PrefabPool预设池子池

总池有角色总池,特效总池等等

每一种独立的预设都是一个子池(一个预设对应一个子池),这些东西最后会放到总池下面List<PrefabPool>,

游戏物体对象的总池

 

预设池,子池

 

 

Spwn对象的时候,从预设列表读取预设数据, 根据数据加载出asset,

 

Sys_Prefab中的预设编号即子池编号,

 

 

PoolId对应

对象池初始化, GameObjectPoolEntity, 游戏对象池单个组界面显示的

循环创建若干个总池,Spwnpool

 

 

 

/// <summary>
        /// 从对象池中获取对象 
        /// </summary>
        /// <param name="prefabId"></param>
        /// <param name="prefab"></param>
        /// <param name="onComplete"></param>
        public void Spawn(int prefabId, BaseAction<Transform> onComplete)
        {
            //读表拿到prefabEntity
            Sys_PrefabEntity sys_PrefabEntity = GameEntry.DataTable.DataTableManager.Sys_PrefabDBModel.GetDic(prefabId);
            if (sys_PrefabEntity == null) return;

            GameEntry.Resource.ResourceLoaderManager.LoadMainAsset((AssetCategory)sys_PrefabEntity.AssetCategory, sys_PrefabEntity.AssetPath, (ResourceEntity resourceEntity) =>
            {
                //对象池实体,根据id找到对应的游戏对象池实体
                GameObjectPoolEntity gameObjectPoolEntity = m_SpawnPoolDic[sys_PrefabEntity.PoolId];//对象池编号

                Transform prefab = ((GameObject)resourceEntity.Target).transform;

                //对象池实体中获得预设池
                PrefabPool prefabPool = gameObjectPoolEntity.Pool.GetPrefabPool(sys_PrefabEntity.Id);//实体编号
                if (prefabPool == null)
                {
                    //没找到
                    //先去空闲的池队列里找 
                    if (m_PrefabPoolQueue.Count > 0)
                    {
                        Debug.LogError("从队列里取PrefabPool");
                        prefabPool = m_PrefabPoolQueue.Dequeue();

                        prefabPool.PrefabPoolId = sys_PrefabEntity.Id;//设置预设池编号
                        gameObjectPoolEntity.Pool.AddPrefabPool(prefabPool);

                        prefabPool.prefab = prefab;
                        prefabPool.prefabGO = prefab.gameObject;
                        prefabPool.AddPrefabToDic(prefab.name, prefab);
                    }
                    else
                    {
                        //没有空闲的,创建新的实体池,第二个参数为预设池编号
                        prefabPool = new PrefabPool(prefab, sys_PrefabEntity.Id);
                        //创建新的预设子池,把resourceEntity传进来,这里是修改过的
                        gameObjectPoolEntity.Pool.CreatePrefabPool(prefabPool, resourceEntity);
                    }

                    prefabPool.OnPrefabPoolClear = (PrefabPool pool) =>
                    {
                        //预设池加入队列
                        pool.PrefabPoolId = 0;
                        gameObjectPoolEntity.Pool.RemovePrefabPool(pool);
                        m_PrefabPoolQueue.Enqueue(pool);
                    };

                    //这些属性要从表格读取,设置子池的属性
                    prefabPool.cullDespawned = sys_PrefabEntity.CullDespawned == 1;
                    prefabPool.cullAbove = sys_PrefabEntity.CullAbove;
                    prefabPool.cullDelay = sys_PrefabEntity.CullDelay;
                    prefabPool.cullMaxPerPass = sys_PrefabEntity.CullMaxPerPass;
                }

                if (onComplete != null)
                {
                    //拿到一个实例
                    Transform retTrans = gameObjectPoolEntity.Pool.Spawn(prefab, resourceEntity);
                    int instanceID = retTrans.gameObject.GetInstanceID();
                    m_InstanceIdPoolIdDic[instanceID] = sys_PrefabEntity.PoolId;
                    onComplete(retTrans);
                }
            });
        }

 对象回池

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity的PoolManager插件是一款非常实用的资源管理插件,可以帮助开发者管理游戏中的对象,提高游戏性能和内存利用率。 要下载Unity的PoolManager插件,可以按照以下步骤进行: 1. 打开Unity引擎,确保已经登录Unity账号。 2. 打开Unity Asset Store,点击右上角的搜索框。 3. 在搜索框中输入“PoolManager”,点击搜索。 4. 在搜索结果中,找到PoolManager插件并点击进入插件详情页面。 5. 在插件详情页面,可以查看插件的介绍、功能、评价等信息。 6. 如果该插件符合需求,点击页面右上角的“Add to My Assets”按钮。 7. 引擎会提示登录Unity账号,输入账号和密码登录。 8. 登录成功后,点击页面右上角的“Buy Now”按钮,购买该插件。 9. 购买后,插件会添加到Unity账号中的“My Assets”中。 10. 在Unity中,点击菜单栏的 “Window” -> “Asset Store”。 11. 在Asset Store中,点击左上角的“My Assets”选项卡。 12. 找到刚刚购买的PoolManager插件,在插件详情页点击“Download”按钮进行下载。 13. 下载完成后,Unity会自动提示安装该插件。 14. 点击安装按钮,待安装完成后,即可在Unity工程中使用PoolManager插件。 以上是Unity的PoolManager插件下载的大致步骤,可以根据实际情况进行操作。祝您在使用PoolManager插件时能够提高游戏开发效率,实现更好的游戏效果。 ### 回答2: Unity的PoolManager插件是一款非常实用的资源管理工具,可以帮助开发者更高效地管理游戏中的对象。如果想下载这款插件,可以按照以下步骤进行操作。 首先,打开Unity的Asset Store页面。在Unity编辑器中,点击顶部菜单栏中的"Window",再选择"Asset Store",即可打开Unity Asset Store网页。 在Asset Store页面上方的搜索框中输入"PoolManager",并点击搜索按钮进行插件的搜索。 浏览搜索结果,找到适合自己的PoolManager插件。可以通过查看插件的评价、描述、截图等信息,选择一个合适的插件进行下载。 点击插件的页面,进入插件详细信息页面。在页面右侧可以看到一个"Download"的按钮,点击该按钮即可开始下载插件。 下载完成后,可以在Unity编辑器中创建一个新的项目或打开一个已有的项目。点击顶部菜单栏中的"Assets",再选择"Import Package",再选择"Custom Package",弹出文件浏览对话框。 在文件浏览对话框中,选择之前下载好的PoolManager插件文件,并点击"Open"按钮进行导入。 Unity编辑器将会弹出一个导入对话框,其中包含插件的文件列表。根据自己的需求,选择要导入的文件,并点击"Import"按钮进行导入。 完成以上步骤后,就成功下载并导入了PoolManager插件。现在可以在Unity编辑器中使用这款插件管理对象,提高游戏开发的效率。 总之,要下载unity的PoolManager插件,首先需要打开Unity的Asset Store页面,搜索并选择合适的插件,点击下载按钮进行下载,然后在Unity编辑器中导入插件文件即可使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值