安徽企业网站建设公司,企业微信后台管理系统,企业网站建设费用计入哪个科目,成都网站设计优秀柚v米科技现在负责的一个运营中的商业项目#xff0c;使用的是 cocosCreator1.8#xff0c;之前没有做好设计#xff0c;所以东西都是直接加载在内存中的#xff0c;到了现在性能问题逐渐暴露出来#xff0c;讨论之后想进行引擎升级#xff0c;升级到cocosCreator 2.4。
官方的升…现在负责的一个运营中的商业项目使用的是 cocosCreator1.8之前没有做好设计所以东西都是直接加载在内存中的到了现在性能问题逐渐暴露出来讨论之后想进行引擎升级升级到cocosCreator 2.4。
官方的升级文档 1.10以后的资源升级 https://docs.cocos.com/creator/2.4/manual/zh/release-notes/raw-asset-migration.html 2.0 升级 https://docs.cocos.com/creator/2.4/manual/zh/release-notes/upgrade-guide-v2.0.html
2.x 相对于 1.x 核心仍然使用的是 cocos2dx只是在js部分有了一些改动所以升级应该是没有大问题但是小问题仍然是有不少这里我们计划按照项目能跑起来、打包APK进行全量的玩法测试、有端渠道进行发布、小游戏渠道发布。
升级遇到的问题
1.文本的问题 文本设置了Line Height 之后 会发现 Node 的高度比这个值要大一些1.8版本就没有这个问题。据说是因为TTF纹理的会有点偏移引擎组为了矫正位置加上了偏移然后对Node的高度进行放大。这里有两个参数修改一下即可
// text_utils.js
-let _BASELINE_RATIO 0.26;
-let _BASELINE_OFFSET 0;
let _BASELINE_RATIO 0; //0.26;
let _BASELINE_OFFSET -0.13; 参考1解决字体本身携带的向上/向下偏移量问题 参考2: 2.1.2版本label的size不可编辑且固定都是FontSize的1.26倍是故意设计成这样的么 参考3: 3.3RichText问题 之前代码中有设置 文本string 然后依赖节点的size进行判断的代码升级后不生效了因为新版本不会在设置完后立刻进行更新如果有类似的逻辑需要手动先调用cc.Label的 _forceUpdateRenderData();
2.EditBox 升级后功能失效无法点击是因为新版本 EditBox的子节点Size有问题我这里代码里直接打补丁把所有都处理一下
let setupEditBoxWidget function(node) {let textWidget node.getComponent(cc.Widget);if (!textWidget) {textWidget node.addComponent(cc.Widget);textWidget.isAlignTop true;textWidget.top 0;textWidget.isAlignBottom true;textWidget.bottom 0;textWidget.isAlignLeft true;textWidget.left 0;textWidget.isAlignRight true;textWidget.right 0;textWidget.updateAlignment();}
}
let oldOnEnable cc.EditBox.prototype.onEnable
cc.EditBox.prototype.onEnable function(){oldOnEnable.call(this);setupEditBoxWidget(this.textLabel);setupEditBoxWidget(this.placeholderLabel);
}3.rotation 这个新版本推荐使用angle 代替 rotation其中 angle -rotation; 即之前rotation 0 是顺时针旋转而angle 0 是逆时针旋转。这里比较坑的是编辑器里是按照angle的逻辑来的但key显示的却是Rotation。 4.event 这个官方文档里有提到
// **v1.x**
eventTarget.on(type, function (event) {// 通过 event.detail 获取 emit 时传递的参数
});
eventTarget.emit(type, message); // message 会被保存在回调函数的 event 参数的 detail 属性上// **v2.0**
eventTarget.on(type, function (message, target) {// 直接通过回调参数来获取 emit 时传递的事件参数
});
eventTarget.emit(type, message, eventTarget); // emit 时可以传递至多五个额外参数都会被扁平的直接传递给回调函数camera 这个官方文档之前也有提到之前是给camera 设置targets, 现在需要通过Mask来实现。这个需要新增一个分组camera改动比较大可能业务逻辑也需要修改。
6.shader 一般游戏都会用到变灰之类的shader需要改成使用materialCCButton里有变灰效果的逻辑可以参考一下
一些废弃的接口 按照报错处理掉就行了其中cc.p用的地方太多了直接重新定义一下 cc.p cc.v2; 还有一个是 1.8版本的prefab 如果 js脚本/spriteFrame 等丢失会有warning但可以运行新版本会直接无法实例话对应的prefab需要删除掉那些无效的引用。