想问下。内置的bundle可以热更吗?
如何配置地址,构建后是整个assets文件夹放到服务器吗?
地址是不是配置 http://xxx/assets ?
文档看了半天。看的有的蒙,求解答
https://docs.cocos.com/creator/manual/zh/asset-manager/bundle/launch.png
还有这个写的是本地地址。怎么更新? 看不懂。。。。。底层会和服务器对比?
想问下。内置的bundle可以热更吗?
如何配置地址,构建后是整个assets文件夹放到服务器吗?
地址是不是配置 http://xxx/assets ?
文档看了半天。看的有的蒙,求解答
https://docs.cocos.com/creator/manual/zh/asset-manager/bundle/launch.png
还有这个写的是本地地址。怎么更新? 看不懂。。。。。底层会和服务器对比?
没有人用2.4吗?
cc.assetManager.loadBundle(‘http://192.168.0.122:1000/remote/res’, function (err, bundle) {
if (err) {
return console.error(err);
}
bundle.load(modules/login
, cc.Prefab, (err, prefab) => {
let newNode= cc.instantiate(prefab);
cc.director.getScene().addChild(newNode);
});
});
md5选项勾选了
为什么服务器资源更新了。加载的还是老的资源
let bundleRoot = ["assets/resources", "assets/main", "assets/internal"];
var count = 0;
function cb(err) {
if (err) return console.error(err.message, err.stack);
count++;
if (count === bundleRoot.length + 1) {
cc.game.run(option, onStart);
}
}
var initBundle = function (bundleversion) {
cc.assetManager.loadScript(settings.jsList.map(function (x) { return 'src/' + x; }), cb);
for (let i = 0; i < bundleRoot.length; i++) {
var op = null;
var bundleName = bundleRoot[i];
if (bundleversion && bundleversion[bundleName]) op = { version: bundleversion[bundleName] };
cc.assetManager.loadBundle(bundleRoot[i], op, cb);
}
}
var xhr = new XMLHttpRequest();
xhr.timeout = 5000;
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status < 400)) {
var httpDatas = JSON.parse(xhr.responseText);
initBundle(httpDatas);
}
else if (xhr.readyState == 4 && xhr.status == 0) {
initBundle(null);
}
};
var url = 'http://192.168.68.165:10220/ver.json';
xhr.open('GET', url, true);
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
xhr.send();
xhr.ontimeout = function () {
initBundle(null);
};
后端ver.json
{
“assets/main”:“3d91d”,
“assets/resources”:“3ef81”
}
修改了main.js 发现内置的bundle还是无法更新
cc.assetManager.loadBundle(“prefabs”, { version: “033c5” }, (err: Error, bundle: cc.AssetManager.Bundle) => {
bundle.load<cc.Prefab>(modules/login
, cc.Prefab, (err, prefab) => {
let newNode: any = cc.instantiate(prefab);
cc.director.getScene().addChild(newNode);
});
})
自己定义的bundle是可以热更。必须用{ version: “033c5” }自己传入版本
**
**
如果想更新内置包,你需要在构建后,先把内置的3个包,比如 main,resources,internal 上传到服务器上,然后修改main.js ,把里面的 bundleRoot 改为对应的服务器地址,类似
let bundleRoot = ["http://xxx.com/assets/resources", "http://xxx.com/assets/main", "http://xxx.com/assets/internal"];
文档我们再完善一下哈
如何热更,如何设置版本号,如何热更前获取要更新大小,更新时的进度如何获取,希望把这些写清楚一下哈。
如何热更前获取要更新大小,更新时的进度如何获取
这些只能用老的热更新方式才能获取
那也只能获得大小,热更进度怎么取???
这个远程地址只能用http:// 或者https:// 不能直接用 :// 。。。。。。