bundle如何实现不同渠道不同资源?

有些渠道资源有增加,有些渠道资源有修改,如果将这些变动都放在一个resources里,势必会增加包体的大小,我的想法是将渠道对应bundle。但是在实际的操作过程中发现,制作bundle1是OK的,但是copy该bundle想进行修改时发现,bundle2里面的资源是索引到bundle1目录下?
请问如何断开这种索引,让bundle2中的资源索引bundle2目录下?

unity 有好多插件。 根据资源引用关系 打ab包。 同理的 ccc应该也可以。 ab没有关联引用才能做分渠道 吧

ccc有类似插件吗?

资源应该分成common, bundle1,bundle2
bundle1和bundle2不要去互相引用,需要互相引用的资源放到common中

那打包的时候如何区别? 比如有10个bundle,只留渠道对应的那一个bundle,其余的都删掉吗?

可以都留着,也可以删。这个看你们自己的需求。

  1. 避免相互引用,每个bundle都是独立的,尤其是资源
  2. 提出你觉得是公共的common相关bundle
  3. 可以维护一个配置表,根据不同的渠道map不同的bundle,启动是根据渠道去加载相对应的bundle

但还是有个问题 假使每个渠道修改的都不一样,且为了减小重复资源,肯定得从common中把各个渠道需要修改的都提取出来,放入各个其他bundle中,这样维护起来也是比较麻烦,一个人处理的时候还好,多人协作还是比较难办

其实按照我的想法,最省事的就是将所有ui资源单独立一个bundle,一个渠道加载一个渠道的uibundle,这样只要处理各个bundle里面的内容,而不需要去处理common里面的东西。所以现在我遇到的麻烦就是用制作渠道bundle,将资源bundle copy一份后,里面的引用还是之前的,我想的是 copy出来后引用的是在bundle里面的

首先渠道差异内容相对于游戏主体,应该是占比极低的。
再者渠道bundle的维护,多人协作上和内有区分之前应该一样的,并没有困难多少。
如果渠道资源确实存在大量变化,可以考虑用i18n的方式组织项目结构。
另外可以再做个bundle优先级索引,比如说渠道资源包 > 多语言资源包 > 默认资源包的方式。

这种直接copy的方式,可以试一下导出资源包,然后再导入。编辑器会处理uuid冲突。

其实差异内容多不多都好说,关键是要有一套方案去处理,我都开始考虑将资源作为git子模块去处理了,当然如果creator有提供方法那最好不过了。

我使用了导出资源包,我3.5.0版本直接报错
**[Scene] Cannot read property ‘/Users/mac/work/game/assets/bundle001’ of undefinedTypeError: Cannot read property ‘/Users/mac/work/game/assets/bundle001’ of undefined
at Object._depend (/Applications/CocosCreator/Creator/3.5.0/CocosCreator.app/Contents/Resources/app.asar/modules/editor-extensions/extensions/package-asset/dist/scene-walker.ccc:1:3316)
at Object._step (/Applications/CocosCreator/Creator/3.5.0/CocosCreator.app/Contents/Resources/app.asar/modules/editor-extensions/extensions/package-asset/dist/scene-walker.ccc:1:3965)
at async Object.getExportAssets (/Applications/CocosCreator/Creator/3.5.0/CocosCreator.app/Contents/Resources/app.asar/modules/editor-extensions/extensions/package-asset/dist/scene-walker.ccc:1:539)
at async PluginManager.executeSceneScript (/Applications/CocosCreator/Creator/3.5.0/CocosCreator.app/Contents/Resources/app.asar/builtin/scene/dist/script/3d/manager/plugin.ccc:1:2158)
at async GeneralSceneFacade.executeSceneScriptMethod (/Applications/CocosCreator/Creator/3.5.0/CocosCreator.app/Contents/Resources/app.asar/builtin/scene/dist/script/3d/facade/general-scene-facade.ccc:1:9996)
at async SceneFacadeManager.executeSceneScriptMethod (/Applications/CocosCreator/Creator/3.5.0/CocosCreator.app/Contents/Resources/app.asar/builtin/scene/dist/script/3d/facade/scene-facade-manager.ccc:1:16999)
**

没用在用3.x的版本,不清楚这个报错。可以咨询一下官方。

已咨询,感谢帮助~