LayaBox H5游戏性能优化

对于游戏开发避免不了性能相关优化,小编总结了如下:

一、内存优化如:代码不规范,初始化定义的变量,销毁时未及时清理会存在内存中
1.对象池优化,LayaAir引擎中的对象池:laya.utils.Pool
2.使用含有对象池的Handler处理异步回调
Handler()没有使用对象池,Laya.Handler.create()使用了对象池
3.在销毁的地方将不使用的对象设置为null,数组的长度值为空,TypeScript最终编译成JavaScript,而JavaScript运行时无法启动垃圾回收器,当对象设置为null时,不会立即将其从内存中删除,只有系统认为内存足够低时,垃圾回收器才会运行,内存分配(不是对象删除)会触发垃圾回收,当存在循环引用时,垃圾回收无法回收。
4.当不需要使用的资源时,使用Laya.loader.clearRes将资源卸载
5.尽量避免大量使用滤镜、遮罩,或者能不用就不要用。如果需要滤镜效果直接让美术模拟出图

二、图形渲染
1.降低显示对象的嵌套层次,减少sprite数量
2.将不可见区域的对象尽量移除或设置visible = false(移除 优先 visible = false)
3.将静态内容(加载后不会一直刷新变化的内容)设置cacheAs属性为"normal"或"bitmap"
4.尽量保证图片渲染顺序是挨着的,尽力不要让不同图集交叉渲染
5.尽力保证一个面板所有资源来源一个图集,以此减少提交批次
6.对于需要持续变更文本内容的Label,先预设置好可能出现的最大宽度值,再使用changeText方法变更文本,如果频繁遇到宽度不可控,还是得选用.text设值,使用changeText设值的优势在于不需要重复计算文本的位置可以提供渲染效率

三、CPU优化
1.JavaScript中任何对象都是动态的,在大量的属性里查找某属性可能会很消耗性能,如果需要频繁使用某个属性值,可设置为局部变量进行引用
2.对于两种计时器(帧计时,时间计时)在不使用的时候都需要及时销毁
3.在使用Laya的时候会遇到一个坑,在给sprite绘制纹理的时候,无法获取sprite尺寸,这是Laya出于性能考虑,在绘制纹理后需自行通过Texture尺寸设置sprite尺寸,重复触发autoSize对于大量子对象的容器是不可取的。
4.对于频繁操作,可以使用延迟调用的方法,避免重复高频计算,在Laya中使用callLater方法实现
5.良好的资源加载及卸载管理

四、其他
1.将多个js文件打包合并成一个文件,可以减少http请求个数,加快游戏读取速度
2.把贴图资源打包成一个大图集加载

你可能感兴趣的:(LayaBox)