Cocos Creator v2.4.3-rc.7 测试帖(正式版已发)

const dirs = [a, b];
bundle.loadDir(dirs.concat(), onComplete);

我觉得你可以先传一个数组的拷贝进去,这样就好了。

目前是拷贝传进去的,只是反馈一下,既然支持多路径加载,那引擎内部可以稍微改改,不要push到原来的数组上,这样开发的时候就不用每次都拷贝一个数组传进去了。

有同事在看

嗯,可以在 loadAny 里面复制一个数组出来

你好,我想问一下,有依赖关系的两个Asset Bundle,更新是不是必须一起更新?

如果只是资源有依赖,代码独立,是否必须可以独立更新?

比如 B依赖A的资源, A更新了,B还是引用A的老资源,老资源过段时间会不会被删除?

比如 B依赖A的资源, A更新了,B还是引用A的老资源,老资源过段时间会不会被删除?

你的意思是在游戏过程中更新 Asset Bundle ?建议不要在游戏过程中动态的卸载老版本的 bundle,然后加载新版本的 bundle。这样已经加载的老版本的资源没办法立马更新的,只能重新再加载一次才行

最后一个问题,怎么获取前端bundle的所有缓存,然后自己来删除那些老的.
要解决缓存问题,要不然一直缓存在前端,用户骂死
解决了这个问题。新项目才决定要不要用bubdle.

        let armatureDisplay = this.zimo.getComponent(dragonBones.ArmatureDisplay);
        var ske = 'test/test_ske';
        var atlas = 'test/test_tex';

        var self = this;


        self.zimo.active = true;
        cc.resources.load(ske, dragonBones.DragonBonesAsset, function (err, asset: dragonBones.DragonBonesAsset) {
            armatureDisplay.dragonAsset = asset;
            cc.resources.load(atlas, dragonBones.DragonBonesAtlasAsset, function (err, atlasasset: dragonBones.DragonBonesAtlasAsset) {
                armatureDisplay.dragonAtlasAsset = atlasasset;
                armatureDisplay.on(dragonBones.EventObject.COMPLETE, function () {
                    self.zimo.active = false;
                }, self);

                armatureDisplay.armatureName = 'Armature';
                armatureDisplay.playAnimation("test", 1);
            });
        });

rc7 模拟器无法正常显示,浏览器可以正常显示,rc3我测试过,我记得是可以正常显示的。

还有个问题: 如果某个bundle想一起打包里,有更新的时候则从远程包加载,该怎么出包?

如果出包的时候不勾选远程包,则资源全是不带md5的,一旦用远程包更新,所有进包里资源都要重新下载!

建议你定制一下加载管线,挺容易做到这个功能的。类似

let REMOTE_SERVER = '';
const REGEX = /^\w+:\/\/.*/;

cc.assetManager.transformPipeline.append(function (task) {
    let input = task.output = task.input;
    for (var i = 0, l = input.length; i < l; i++) {
        let item = input[i];
        if (!REGEX.test(item.url) && item.config && !jsb.fileUtils.isFileExist(item.url)) {
            let split = item.url.split("assets/");
            item.url = cc.path.join(REMOTE_SERVER || "", 'remote_assets', split[1]);
        }
    }
});

从2.4.2升级到2.4.3 rc7,进入场景时报错:
loadScene时,加载的是子包的场景,但是子包已经提前加载完成了。看起来像是加载场景文件序列化出错了

建议把子包的远程地址开放出来啊 REMOTE_SERVER 现在是一个局部变量,难受!!!

这个能给个demo么?

这个可以的

2.4.0版本,设置了压缩纹理,default用png,android用etc1,经常出现build后资源错误

另外我看版本介绍里说压缩资源会缓存,但是我build每次都会重新合图压图

资源错误是什么意思?

你看图中我build的web平台,应该全是png的,结果里面有pkm,我运行对应的场景,那部分资源也是丢失的
之前build andoird也会出现png混入在里面,一般我都是删除temp重新build就好了,不过出现很多次了有点烦人

了解,我们排查一下

或者能看下具体报错的地方么