微信游戏在哪里 微信游戏在哪里设置不要好友看到( 五 )


最后的结果,如图所示:

微信游戏在哪里 微信游戏在哪里设置不要好友看到

文章插图
这4.2M主程序文件,被分割成一个1.2M和一个3M,小的打包成一个包,里面有引擎代码和一堆其他的小文件,共2.1M,3M那个文件只是一个包 。当程序运行时,会进入游戏,先加载2.1M的包,它将在完成后立即加载3M的包 。加载完两个包后,会进入游戏 。
陈源:游戏性能优化
游戏性能问题,往往是我们游戏程序员最关心的问题,对于这个问题,这里我总结一下我关于游戏性能优化的八点想法:
理念一:善于从问题的表象进行优化
当游戏中出现问题时,最直接的表现就是卡,有许多不同的情况导致卡顿的问题 。在解决卡顿问题之前,我们应该首先排除外部问题是否导致了堵塞,外部问题:网络差,硬件差,系统问题等 。排除外部问题引起的卡后,我们可以根据卡顿现象来定位问题 。
1.稍微更频繁的干扰
1)帧率
根据游戏本身设置帧率范围,一般游戏建议30框架就够了
2)Drawcall
在理解什么是drawcall后,我们知道,过高的drawcall会导致卡顿,这里有一些折扣drawcall的方法:
A.查看drawcall
在layabox中,添加代码DebugTool.showStatu = true;
B.连续渲染同一图集中的图片,它只会被执行一次drawcall
C.UI上drawcall优化
优化的思路是尽可能使同一图集中的图片一次性连续渲染,例如:在layabox打开其中一个UI,查看表单层次结构界面中的子对象,如下图:
微信游戏在哪里 微信游戏在哪里设置不要好友看到

文章插图
我们可以看到每个子对象的正面,有一个小点,这个点的颜色代表他来自哪个图集,相同颜色的点代表同一个图集 。渲染UI时,UI上的每个子对象都是从上到下渲染的 。而不影响界面,调整界面中组件的级别,可以减少drawcall的目的 。调整后,如图所示:
微信游戏在哪里 微信游戏在哪里设置不要好友看到

文章插图
优化前:会有6次drawcall
优化后:只有3次drawcall
D.出现drawcall优化
以场景中的人物为例:
假设一个角色的一组资源在一个地图集中 。
微信游戏在哪里 微信游戏在哪里设置不要好友看到

文章插图
所以这套服装中的人物在场景中被连续渲染,只用1次drawcall 。实际上,在游戏中,穿同一套衣服的人不会按照理想的顺序出现 。在一个场景中会有许多穿着不同服装的角色,每套衣服都在一本地图册里 。换句话说,场景里,渲染N这样的角色需要无限接近N次drawcall 。
微信游戏在哪里 微信游戏在哪里设置不要好友看到

文章插图
当每个角色都有阴影的时候,影子资源,它必须在一个不同于每个包资源的atlas中 。
情况1:和人物阴影在同一个容器中处理,每个容器都是一个角色,这将会发生,渲染单元A,将使用两套图集+有两张影子图册drawcall 。当渲染N个人物,就有N*2次drawcall 。
情况2:移除渲染的阴影,当所有的字符都被渲染时,根据所有字符的位置,画一个阴影 。这种情况,渲染N个人物,只会有N+1次drawcall显然现在的情况2处理方法比较好 。
当每个角色都有名字时、称号、血条和其他元素,如果这些要素符合上述情况1的处理,那drawcall就有N*M次 。根据上面的情况放这些元素2的处理,显然可以减少很多drawcall 。
E.其他削减drawcall的方法
如:减少遮挡单元渲染
Atlas控件
3)高消耗运行,特别是enterframe和for在循环内部
注意代码逻辑优化,降低算法复杂度
4)资源加载缓存有问题/资源过于分散,造成I/O过高
优化资源加载策略
5)打印日志
减少打印日志
6)限制基础渲染分辨率
2.突然,大卡顿
  • 一些不规范的操作,高循环复杂度
它可以被执行到一些具有高复杂性的循环中,导致突然,大卡顿
  • 包裹太大
关注协议包优化,优化方法,例如:
如果以上a,b,c当的值仅低于十位数时,可以整合到一个领域:
这样做的好处,最初需要12数据字节,仅现在4字节也行 。
  • 垃圾恢复负载过重
装置是否经常初始化,用后销毁?
需要使用对象池吗
如果卡顿发生了UI上: