当前位置: 首页 > wzjs >正文

优秀简单的ppt作品成都关键词seo推广平台

优秀简单的ppt作品,成都关键词seo推广平台,广西梧州市住房和城乡建设局网站,如果只做p2p种子搜索网站一、设计目的 为了避免频繁创建和销毁对象&#xff08;例如 UI 元素、事件对象等&#xff09;带来的内存分配和垃圾回收压力&#xff0c;可以使用对象池来管理对象来提高游戏的性能&#xff0c;避免游戏卡顿。 二、代码实现 public interface IRecycle {/// <summary>…

一、设计目的

为了避免频繁创建和销毁对象(例如 UI 元素、事件对象等)带来的内存分配和垃圾回收压力,可以使用对象池来管理对象来提高游戏的性能,避免游戏卡顿。

二、代码实现

public interface IRecycle
{/// <summary>/// 回池必须调用的接口/// </summary>public void OnRecycle();/// <summary>/// 初始化接口/// </summary>public void OnFetch();
}public class CacheObjectMgr: Singleton<CacheObjectMgr>
{private Dictionary<Type, Queue<IRecycle>> m_Gos;protected override void OnInit(){base.OnInit();m_Gos = new Dictionary<Type, Queue<IRecycle>>();}public T Fetch<T>() where T : class, IRecycle, new(){IRecycle obj = null;Queue<IRecycle> pool = _GetPool(typeof(T));if (pool.Count > 0){obj = pool.Dequeue();}else{obj = new T();}obj.OnFetch();return obj as T;}public void Recycle(IRecycle go){if (go != null){go.OnRecycle();_GetPool(go.GetType()).Enqueue(go);}}private Queue<IRecycle> _GetPool(Type type){Queue<IRecycle> pool = null;if(!m_Gos.TryGetValue(type, out pool)){pool = new Queue<IRecycle>();m_Gos.Add(type, pool);}return pool;}
}

1.代码分析

字典存储结构:使用 Type 作为键,存储每种类型对应的对象池(队列)。这样不同类型的对象可以分开管理,且在回收和取用时无需强制转换。

对象池的设计:每个队列中存储的都是 IRecycle 类型的对象。由于 C# 支持接口的多态性,只要对象实现了  IRecycle 接口,就可以存入该队列中,而不需要关心具体的实现类型。

这个接口定义了两个关键方法

OnFetch():在对象从池中取出时调用,用于执行初始化工作(例如重置状态、注册事件等)。 OnRecycle():在对象回收前调用,用于清理或重置对象状态(例如注销事件、释放资源等)。

Fetch 逻辑:方法约束:where T : class, IRecycle, new() 确保了被管理的对象必须实现 IRecycle 接口,并且可以通过无参构造函数创建。

获取对象的方式:

①通过 _GetPool(typeof(T)) 获取对应类型的对象池(如果不存在则创建新的队列)。

②判断池中是否有可用对象:如果有则调用 Dequeue 取出,否则通过 new T() 创建新对象。

③调用对象的 OnFetch() 方法完成初始化操作(例如注册事件、设置状态等)。

④返回对象,并通过 as T 进行类型转换。

这种实现方式确保了在每次从池中取出对象前,都能通过 OnFetch方法对对象进行了必要的初始化,保证对象处于可用状态。

该方法通过传入对象的类型来获取或创建对应的队列。

获取对象的方式:

①判断是否存在该类型的对象池,如果不存在就创建该类型的对象池并将其添加到字典中。

②如果存在就获取该类型的对象池。

回收对象的方法:

该方法在对象使用完毕后,进行调用 Recycle 方法然后将对象放回池中。

①判断对象是否为空

②调用对象的 OnRecycle() 方法:此方法通常用于清理、解除事件注册、释放使用过的资源等,这样可以确保对象在下次取用前处于一个全新的状态。

③然后根据对象类型,调用 _GetPool(go.GetType()) 获取对应的队列,然后使用 Enqueue 将对象加入队列。

三.示例演示

关键步骤:

在类中去实现IRecycle这个接口,实现这个接口就要去实现接口中所声明的所有方法。

在通过Fetch方法创建对象时会调用该对象中的OnFetch() 进行初始化。

回收方法实现:

在事件结束后调用OnRelease进行回收,调用该方法会通过Recycle先调用 OnRecycle() 方法,进行比如:清理状态、注销事件和释放使用过的资源等。然后将对象重新放入对象池中,等待下次复用。

四、总结

通过这种方式去管理游戏中的对象,可以减少了对象频繁创建的性能开销,进而避免游戏卡顿。

http://www.dtcms.com/wzjs/473993.html

相关文章:

  • 免费b2b网站大全免费黄页电商培训内容有哪些
  • 网站分析宁波seo网站推广软件
  • 什么网站可以做PS 写论文兼职美国疫情最新数据消息
  • 给网站划分栏目老客外链
  • 有哪些做婚礼电子请柬的网站郑州制作网站公司
  • 网站的服务器怎么做的东莞网站设计公司排名
  • 建网站一定要备案吗随州今日头条新闻
  • 宝塔软件怎么做网站企业网站模板免费
  • 怎样做网站表白软文广告有哪些
  • 网站优化具体是怎么做的网页设计和网站制作
  • 多少钱可以做网站关键词优化排名软件推荐
  • xx市院门户网站建设方案怎样推广公司的网站
  • 洛阳数码大厦做网站的在几楼百度推广咨询
  • 可以免费建设网站吗如何快速推广自己的产品
  • 餐饮如何做网络推广上海网站营销seo方案
  • 一家专门做打折的网站网络运营
  • 网站的产品上传图片网站做外链平台有哪些
  • 帮人家做网站怎么赚钱网站排名查询工具
  • 做网站网站建设专业公司哪家好sem全称
  • 长寿网站建设乔拓云网微信小程序制作
  • 机械产品做那几个网站好发布平台
  • 成都住房和城乡建设部网站电商运营培训
  • 怎样做企业网站建设站长字体
  • 最新网站备案谷歌seo查询
  • 网站建设一般要提供什么内容打广告的免费软件
  • 用vue element-ui做的网站深圳网站优化公司
  • logo制作在线seo关键词排名优化如何
  • 济南网站的建设seochinazcom
  • 加强政府网站建设管理的重要性站长工具5g
  • 互联网非经营性网站icp备案系统网站安全检测