内置 Asset Bundle如何热更,远程服务器地址如何配置

想问下。内置的bundle可以热更吗?
如何配置地址,构建后是整个assets文件夹放到服务器吗?
地址是不是配置 http://xxx/assets ?

文档看了半天。看的有的蒙,求解答

https://docs.cocos.com/creator/manual/zh/asset-manager/bundle/launch.png
还有这个写的是本地地址。怎么更新? 看不懂。。。。。底层会和服务器对比?

:innocent:没有人用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” }自己传入版本

**

现在只想问下。内置的bundle是否可以热更??

**

如果想更新内置包,你需要在构建后,先把内置的3个包,比如 main,resources,internal 上传到服务器上,然后修改main.js ,把里面的 bundleRoot 改为对应的服务器地址,类似

let bundleRoot = ["http://xxx.com/assets/resources", "http://xxx.com/assets/main", "http://xxx.com/assets/internal"];
1赞

文档我们再完善一下哈

如何热更,如何设置版本号,如何热更前获取要更新大小,更新时的进度如何获取,希望把这些写清楚一下哈。

如何热更前获取要更新大小,更新时的进度如何获取

这些只能用老的热更新方式才能获取

那也只能获得大小,热更进度怎么取???

这个远程地址只能用http:// 或者https:// 不能直接用 :// 。。。。。。