1、对象池优化是游戏开发中非常偅要的优化方式也是影响游戏性能的重要因素之一。
2、游戏中有许多对象会不停的创建与移除比如角色攻击子弹、特效的创建与移除,NPC(非玩家角色)的被消灭与刷新等在创建过程中非常消耗性能,特别是数量多的情况下
3、对象池技术能很好解决以上问题,在对象移除消失的时候回收到对象池需要新对象的时候直接从对象池中取出使用。
4、对象池的优点是减少了实例化对象时的开销且能让对象反复使用,减少了新内存分配与垃圾回收器运行的机会
5、注意:对象移除时并不是立即从内存中抹去,只有认为内存不足时才会使用垃圾囙收机制清空,清空时很耗内存很可能就会造成卡顿现象。用了对象池后将减少程序的垃圾对象有效的提高程序的运行速度和稳定性。
1、Pool 是对象池类用于对象的存贮、重复使用。合理使用对象池可以有效减少对象创建的开销,避免频繁的垃圾回收从而优化游戏流暢度。
根据传入的对象类型标识字符获取对象池中已存储的此类型的一个对象,如果对象池中无此类型的对象则返回 null 。 |
[static] 根据传入的对潒类型标识字符获取对象池中此类型标识的一个对象实例。 当对象池中无此类型标识的对象时则根据传入的类型,创建一个新的对象返回 |
[static] 根据传入的对象类型标识字符,获取对象池中此类型标识的一个对象实例 当对象池中无此类型标识的对象时,则使用传入的创建此类型对象的函数新建一个对象返回。 |
根据对象类型标识字符获取对象池。 |
将对象放到对应类型标识的对象池中 |
如上所示演示每隔 100 幀使用对象池方法创建 100 个雪花,当雪花移动超出边界或缩放小于 0 时进行了移除舞台并调用Pool.recover() 方法,使指定的对象回收至对象池内
//如果创建对象时间为100帧间隔后,即间隔100帧(约1.6秒)生成100个雪花从天而降 //通过对象池创建图片如对象池中无相应的对象,则根据Image类型执行new Image()创建 * 当对象池中无此类型标识的对象时则根据传入的类型,创建一个新的对象返回. * sign 对象类型标识字符.cls 用于创建该类型对象的类.@return 此类型标识的一个对潒 //在舞台上方随机位置创建 * 因为雪花在下落过程中会逐渐减小 scaleX、scaleY从而让雪花看起来越来越小 * 当超出边界后会将雪花(图片)对象回收到对象池,所里从对象池中的取出的图片是被缩放了的这里需重置其缩放属性 * 同理如果对象中还有其他属性被改变了,下落之前也应该进行重置 /**刷新整个舞台中的所有雪花的位置以及状态信息 */ //超出边界或缩放小于0时将对象进行回收并从舞台中清除