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

明白了。谢谢
:grin:

龙骨帧事件问题有没有人在看呢,自己弄半天没头绪,着急:tired_face:

不明白为什么,bundle要做成缓存,直接替换不香?这不让费用户存储空间吗,原生平台还没办法清除,还要时不时clearLRU,还不知删除多久的
目前来看,对于原生很不实用

回退版本?

加载单/多文件和加载目录不都是走的loadAny接口么?多文件就可以用数组?多目录就不行?而且同时加载多个目录不是很常用的么?多文件的就没push,文件夹的就push,这不是引擎写法上的错误么?
文件夹的

文件的

請問這邊的緩存指的是本地目錄對嗎

就是原生上的 writeablePath

1赞

引擎不会主动帮用户删除文件,引擎无法判断两个版本之间谁新谁旧,版本号对引擎来说只是一个字符串

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 现在是一个局部变量,难受!!!