加载Bundle出错,可能是优先级问题 请问官方internal资源是怎么管理的

2.4.11 安卓平台
建立了一个Bundle 优先级是9, 里面有图片声音和prefab等, 因为想让这个包里涉及到的资源都被打包到这个Bundle里,prefab的图片都是引用这个Bundle里的 然后还有些是引用了 db://internal内部的图片 比如 default_sprite_splash.png,
打包正常,但首场景启动时候报Please load bundle xxx first,然后Bundle去掉那些prefab首场景启动正常了,
所以估计是Bundle里prefab引用了 db://internal内部的资源导致的 ,那么请问
db://internal 最终是被打包到哪个Bundle?
因为 内置的internal Bundle优先级是11 本以为db://internal 都是应该被打到内置的internal里,这样 就算自己的Bundle 优先级是9 也不会影响内置的资源,
但结果是错的,
那么请问 db://internal 的资源 是怎么管理的 最终被打包到哪个Bundle里?

db://internal构建后就在构建目录/assets/internal就是资源位置。 你那个问题明显是因为启动场景里有用到那个9级bundle导致。在预览模式下是会自动把所有bundle提前加载,但如果是在web正式发布, 在构建后的main.js里会发现在scene启动前其实有一段bundle的加载, 你改一下就好了;
image

我也遇到了,测试了下,感觉是cocos的bug(特性?),构建目录/assets/internal里并不是全部的被引用到的资源

image

可能有点乱,如上所示,单独做了一个分包,解压后看到native里只有俩个资源;在ide里可以看到只用到了一个灯笼资源,理论上native里应该只有灯笼的资源;多出来的一个资源最终定位到internal内的default_btn_normal,引用的方式也很奇怪,是用在Button控件的transition属性的变化里了,但是我实际使用的是SCALE而非SPRITE。就有俩个点:一是这里实际没有使用到但是prefab文件里标记了引用,二是即使标记了引用应该也是打包时放入internal路径,但是实际上放在了自定义分包里

image 补一个bundle在ide里的图更直观

估计是个设计缺陷 我怀疑可能的原因是如果db://internal的资源都放到internal包里 会导致internal包过大,不利于管理 所以 db://internal就放到非internal包的最高级的Bundle包里了 这个结果非常恶心变得 可能是官方根本不参数产品的开发和运营导致的 他们认为和合理的

很好奇 为什么官方不出来解释一下呢