-
Creator 版本: 2.1.3 (总有一些项目需要这么老的版本
) -
目标平台: Windows、Web、Chrome浏览器
-
核心代码
cc.loader.load({ url: this.base64DataUrl, type: “png” }, (err, texture: cc.Texture2D) => {}) -
核心问题:
使用cc.loader.load加载base64编码的图片数据时,在开发中使用浏览器预览时,加载完成耗时是正常的,但构建web(web-mobile/web-desktop)后运行起来,加载的时长明显慢了很多很多。 -
对比测试:以cocos.png精灵图的base64数据加载为例
Creator 245、246、249 构建web-mobile后与开发中预览均正常,耗时基本一致0.008s;
Creator 232 打包后明显更耗时 开发时预览耗时0.011s,构建web-mobile后耗时2.273s;
Creator 213 打包后明显更耗时 开发时预览耗时0.005s,构建web-mobile后耗时2.263s; -
如上,针对2.1.3应该如何破解这个构建后加载base64的耗时问题呢
希望各路大神指点迷津 -
完整Demo Test_LoadBase64Data_CCC213.zip (272.8 KB)
找到问题了:
CocosCreator2.1.3\resources\engine\cocos2d\core\load-pipeline\subpackage-pipe.js中
function getUuidFromURL(url) {
// fix start
if (!url) {
return “”;
}
// 对base64的url不做正则匹配
if (url.startsWith(“data:image/png;base64,”) || url.startsWith(“data:image/jpg;base64,”)) {
console.log(“getUuidFromURL bugfixed”);
return url;
}
// fix end
// 耗时原因在这儿
var matches = url.match(UuidRegex);
if (matches) {
return matches[1];
}
return “”;
}
CocosCreator2.1.3\resources\engine\cocos2d\core\load-pipeline\md5-pipe.js中MD5Pipe.prototype.transformURL也做同理处理
最后再编译下引擎即可:
https://docs.cocos.com/creator/2.1/manual/zh/advanced-topics/engine-customization.html