网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

ListPool怎么用

这篇文章主要介绍“ListPool怎么用”,在日常操作中,相信很多人在ListPool怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ListPool怎么用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

濉溪ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

是什么

ListPool是Unity的UISystem源码中的List对象池,它是由ObjectPool扩展而来的。具体源码如下

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

namespace UnityEngine.UI
{
   internal static class ListPool
   {
       // Object pool to avoid allocations.
       private static readonly ObjectPool> s_ListPool = new ObjectPool>(null, Clear);
       static void Clear(List l) { l.Clear(); }

       public static List Get()
       {
           return s_ListPool.Get();
       }

       public static void Release(List toRelease)
       {
           s_ListPool.Release(toRelease);
       }
   }
}

为什么

List是在游戏中经常会用到的数据结构,比如需要读取表格数据载入关卡表中的各项关卡,还有平时需要用到List的时候都需要临时new一个,后面的销毁完全交给C#。这种方式会导致不必要的GC,游戏中临时使用的List都应该考虑使用ListPool,而不是直接取new一个出来,List通过ListPool去管理。

怎么做

创建时调用

List m_Positions = ListPool.Get();

销毁时调用

ListPool.Release(m_Positions);

需要注意的是,创建和销毁一定要成对出现,不然就失去了循环利用的效果了。

ListPool继承自ObjectPool,因此内部也是一个Stack(last-in-first-out (LIFO))后进先出的结构,当我们需要新建(Get)一个新的List的时候,先从Stack的堆顶取出第一个,当使用结束的时候将List释放掉(Release),也就是将其重新放回Stack堆里面。ListPool里面设置了Get的回调为null,Release时候的回调为List.Clear()函数,将List置空。

到此,关于“ListPool怎么用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


新闻标题:ListPool怎么用
转载来源:http://bjjierui.cn/article/gogogj.html

其他资讯