【bug】AssetManager.Task的bundle名称错误

写了以下代码,用于拦截修改资源加载路径修改:

    private static replacePresetAsset(task: AssetManager.Task) {
        const input = task.output = task.input;
        const bundle = PresetConfigManager.bundle;
        const presets = PresetConfigManager.presets;
        for (let i = 0; i < input.length; i++) {
            const item = input[i] as AssetManager.RequestItem & { config: any, overrideUuid: string };
            const config = item.config;
            if (config == null || config.name != PresetConfigManager.presetBundleName) continue;
            // @ts-ignore
            const path: string = item.info?.path;
            if (path == null) continue;

            const dirnames = path.split("/");
            if (dirnames.length < 2) continue;
            const preset = presets[dirnames[0]];
            if (preset == null || preset.value == dirnames[1])
                continue;

            const newPath = path.replace(dirnames[1], preset.value);
            const info = bundle.getInfoWithPath(newPath);
            if (info == null) return console.warn(`preset asset ${newPath} is not exist.`)

            item.info = info;
            item.overrideUuid = info.uuid;
        }
    }

    protected static registerPipeline(): void {
        assetManager.transformPipeline.insert(PresetConfigManager.replacePresetAsset, 2);
    }

资源中有两个bundle:presets和resources,在resources中有一个Test预设,这个预设包含了presets里面的一个预设。Test里面的这个预设想要在运行时被修改加载路径的。
image
image
问题:在浏览器预览时:这个model_EnemyTiers被错误的标识成resources这个bundle。在打包webMobile后,运行时正常,给的是presets这个bundle。
image
image

复现的demo都整合在这里。
https://forum.cocos.org/t/topic/154931/84

为什么你不直接放在同一个 bundle 下? 浏览器预览为了加快速度,在一些效果模拟上是做了取舍的,比如这里主要是因为预览的时候就不会根据 bundle 优先级和资源依赖关系去做 bundle 内资源的二次分类,因为这个过程在资源量大的情况下会耗时比较久,包括自动图集纹理压缩浏览器预览也是因为类似原因不支持的。

在浏览器和构建后效果完全保持一致的这个目标上,我们还有挺多的关联结构需要调整,这部分还需要时间,所以这个问题短期内只能通过调整资源目录或者运行构建后的项目测试来解决。

业务需要,建议建个issue跟踪一下,不然可能后续都忘了。

一直有 issue 。

方便给个链接吗?