基于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. 其它
- Spine动画换肤,却不成功,需要调用
setToSetupPose
this.skeleton.setSkin(“t-01”);
this.skeleton.setAnimation(0, “idle”, true);
this.skeleton.setToSetupPose();
- Spine动画有黑边
关闭Premultiplied Alpha贴图预乘
…
待大家一起补充~