Creator性能优化

基于Cocos Creator2.0.9 & Cocos Creator 2.1.0
开发小tips


###1. 节点的显示及隐藏
优化原因: 在子节点较多的UI界面、重新遍历整个渲染树,效率很低。
解决方案: setPosition | setOpacity
其它问题: drawcall会降不下来
补充解决: 使用Camera进行剔除,能够降低drawcall。

###2. 节点添加。
代码片段:

for ( let i = 0, len = array.length; i < len; i++) 
{
    let node = cc.instantiate(prefab);
    node.parent = this.node;
} 
...

会遍历完for循环,逻辑再往下执行。
优化后:

for ( let i = 0, len = array.length; i < len; i++) 
{
    setTimeout(()=>{
        let node = cc.instantiate(prefab);
        node.parent = this.node;
    }, i*100);
} 

异步执行。

###3. Loading界面和节点池的搭配使用
实时的创建及销毁,是较消耗CPU的,也会影响游戏帧率
Loading界面,尽可能的将需要用到的骨骼动画、飞弹、特效等加到节点树上。
搭配节点池回收可复用的节点。

###4. 资源管理优化

  • 场景1:游戏头像,单个ICON等资源并不适合打成图集, 这时候加载一张小图的速度,高于加载一整张图集。
  • 场景2:老生常谈,打图集合并drawcall, 利用小图进行九宫格拉伸。
  • 场景3:延迟加载资源,对于打开某些界面速度有提升。

###5. 竖屏游戏适配
背景图片做宽做大,750*1334能适用极大多数终端屏幕。
贴边的UI使用Widget。

let frameSize = cc.view.getFrameSize();
let bFitWidth = (frameSize.width / frameSize.height) < (750 / 1334)
cc.Canvas.instance.fitWidth = bFitWidth;
cc.Canvas.instance.fitHeight = !bFitWidth;`100);

###6. 其它

  1. Spine动画换肤,却不成功,需要调用setToSetupPose

this.skeleton.setSkin(“t-01”);
this.skeleton.setAnimation(0, “idle”, true);
this.skeleton.setToSetupPose();

  1. Spine动画有黑边
    关闭Premultiplied Alpha贴图预乘


待大家一起补充~

18赞

谢谢!!!

这个是要代码关闭吗?

您好 楼主
DragonBones新增两种加速模式,无法更换卡槽slot下图片实现换装。
请问您的龙骨动画换肤使用加速模式了吗?

马克马克

MARK

之前写龙骨写错了,其实是Spine,编辑器有个预乘的开关

这个我不是很清楚,抱歉,不过文档上PRIVATE_CACHE应该能满足你的需求

这个好,Mark,备用!

备用!

mark,感谢

mark,感谢

mark

Mark,备用

干货,支持一下
mark

Mark

应该是那个alpha

mark,又学到了一招

mark备用

markmark