cocos creator 项目总结五(战斗性能优化)

        前面 cocos creator 项目总结二(战斗帧同步解析) 已经讲到过帧同步过程卡顿的优化问题,本片主要针对3d 对战过程性能优化的一些点。

        其实我们优化的方向其实是很直接的两个方面 1、降 drawcall  2、减少复杂的运算逻辑,尽量将性能中能用内存换速度的都用缓存提升运算速度。其它的就是一些细节问题了

1、ui  drawcall 的优化,这个点其实cocos 论坛很多朋友都分享过,主要是通过合图降低drawcall,label 开启cache 模式,bitmap 和 char 两中方式的选择,主要看你label是否经常变化了,所谓变化就是你的label内存字符的变化,比如我  从  abc 变成 cba 这种没有字符内容变化的是没有关系的。

2、模型优化,这方面其实论坛也有很多朋友分享了,无非场景要美术把能合并的模型全部合并,材质球经量用同一个,(我们的美术资源是unity store买的,我发现这个资源有个特点就是虽然场景颜色丰富但是他都是一个材质球,这个材质球是一个调色板一样的)

这对drawcall 合批是很有帮助的。然后战斗中的 子弹和人物模型 材质能开启 instancing 的都开启。但是有个点需要注意的就是如果开启了instacing 记得模型上的动画记得开始烘焙模式 UseBakedAnimation 不然你相同模型同时播放不同动画会有问题。

        在这里我遇到一个问题至今也没解决,就是如果你的材质是transparent 的你开启 instancing 是有问题的(主要是android端)不开 DepthTest 和 DepthWrite 就导致模型层级有问题,开DepthTest 和 DepthWrite 就会导致透明部分的看到的颜色不是我的地面颜色。反正各种方法我都试了没有办法,只能放弃,还好目前不开我的游戏还不会卡,否则我要吐血了。

        另一个问题就是,如果模型上两个mesh 的材质开了transparent 那你在mesh的节点要确保你要显示在前面的node设置在最后,否则android端还是会看不到,比如下面的 Bear 和 face 一定要face在Bear下面否则就看不到角色的脸了。

3、cpu 计算优化,这个方面的优化,其实 cocos creator 项目总结二(战斗帧同步解析) 中我也提到过,主要是合理的helper 缓存map数据结构,将获得指定的对象能用 O(1) 的速度获得,寻路算法Astar,我们在做地图的时候尽量将map的格子做大点这样我们地图寻路的时候就不会特别耗性能了。另外能用缓存或者打表方式提前计算好的数据提前算好。这样能减少战斗过程中很多不必要的运算复杂度。

4、战斗粒子效果的优化,这方面目前感觉creator 的3d粒子性能真的不是很高。粒子数稍微多点就卡到不行,然后粒子材质也不能合批,drawcall也涨得飞起。这方面我最终的优化方法只能要求美术把粒子数量压缩到最低数量。另外还有一个优化的点就是从业务层,我会判断当前创建的效果node是否是玩家的可视区域,如果不是则直接ui层不会创建这个效果node。因为我的游戏逻辑层和ui层是完全解耦的。ui是靠逻辑层驱动显示的。所以就算一些效果节点不显示也不会影响我的数据逻辑。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值