先看看问题:
res/import/底下有很多json文件,每个prefab、spriteframe、scene等等都会生成一个json文件,加载场景的时候会将这些asset json文件下载完毕后你的场景才能出来,巨慢无比;
简单解决思路:
将这些json文件内容合并,然后将合并后的内容预置到main.js中,修改cocos源码,判断如果请求的是asset json则从预置的main.js中读取出来,避免网络请求;
1、
我们需要修改main.js和cocos2d-js-min.js这两个文件;
2、将生成的所有json文件内容合并成一个大的json object,格式:{“json1文件名”:“json1文件内容”, “json2文件名”:“json2文件内容” …}
MergeCreatorJSON.app.zip (1.8 MB)
我做了一个工具(只有OSX版),用来读取json并生成大的json object:
3、copy出工具生成的json文件内容,放到main.js中:
4、然后在 main.js里加上很挫的几行代码:
window.inner_downloadText = function (item, callback) {
if (item.type === "uuid") {
if (jsonObj[item.uuid]) {
callback(null, jsonObj[item.uuid]);
} else if (jsonObj[item.id]) {
callback(null, jsonObj[item.id]);
}
return true;
}
return false;
};
放在这里:
5、修改 cocos2d-js-min.js文件,找到 第20行,第2833列,插入很挫的代码:
if(window.inner_downloadText(t,e)) {return;};
如果你嫌麻烦,我把我修改好的cocos2d-js-min.js放上来了:
cocos2d-js-min.js.zip (254.6 KB)
6、搞定
7、注意事项:
稍微麻烦的地方:只要你在creator中修改了界面、元素、添加了图片等等,会导致asset json文件改变,你都需要从第二步开始,重新合并json、替换main.js中的大json串;
完毕