关于扩展的scene-script中运行cc.assetManager.loadBundle的问题

最近在研究扩展。根据官方的教程。(scene-script 字段用于声明一个扩展包内的脚本,在该脚本中可以使用引擎 API,并访问当前场景中的节点和组件)。然后在脚本里面用:cc.assetManager.loadAny([{uuid:‘85oA7pja5MbZuGAPwnXmUo’}], (errorMessage, loadedResource) => {
//这样可以成功加载到资源(prefab)。并实例化,添加到节点
var TipBoxPrefab = cc.instantiate(loadedResource);
TipBoxPrefab.setPosition(cc.v2(100, 0));
//将预制资源添加到父节点
itemnode.addChild(TipBoxPrefab);
}

然后我想实现批量的资源操作。于是用了:
cc.assetManager.loadBundle(‘physics’, (err, bundle) => {
bundle.load(‘physics’);
let bundle1 = cc.assetManager.getBundle(“physics”);
bundle1.loadDir(’/’, function (err, assets) {
let items = assets;
let pres = bundle1.get(‘baffle/baffle_green3’);
cc.log(pres)
})
});
这个代码在非扩展脚本下运行正常。但在scene-script下却报错了:


TypeError: Cannot read property ‘base’ of null at createBundle

cocos刚用个把月。忘老司机指导一二

在scene-script 中加载批量资源并管理的替代方法,替代方法:
Editor.assetdb.queryAssets(‘db://assets/physics/’ + ‘/**/*’, “prefab”, (err, results) => {
// this.show(results);
if (err) {
throw err
}
if (results.length == 0) {
if (callback) callback()
return
}

        let assetArr = [];
        for (let i = 0; i < results.length; i++) {
            assetArr.push({
                uuid: result.uuid
            });
        }

        cc.assetManager.loadAny(assetArr, (errorMessage, loadedResource) => {
            if (errorMessage) {
                throw errorMessage
            }
            this.prefabMap = {};
            for (let i = 0; i < loadedResource.length; i++) {
                const res = loadedResource[i];
                this.prefabMap[res.name] = res;
            }
        })
    })

希望对你有帮助