Q: 项目中使用git进行版本管理,在每次生成AssetBundle时都是使用 BuildAssetBundleOptions.Determinestic对所有的资源生成AssetBundle,并且生成的缓存目录都是统一的。但是发现在切换Branch 后,本身没变化的资源生成的AssetBundle发生了变化。
通过Editor/Data/Tools 中的 webextract 和 binary2text工具对比发现其中的preloadIndex发生了变化,但实际上资源别没有变

请问大家的项目中对于AssetBundle增量打包有好的方案吗?还是需要手动管理每一个变化的资源再进行AssetBundle的生成?
A1: 通过版本管理维护好每一次增量打包的AssetBundle和Library应该能解决不同分支/不同机器增量打包的问题。
比如第一次打完上线包:上传Assetbundle + manifest + Library;
第二次打包前,重置并拉取最新的Assetbundle + manifest + Library,资源发生变化的AB包才会被重新打包;上线后再上传Assetbundle + manifest + Library;
A2: 这个问题我还好像跟谁讨论过,目前我的策略是ab肯定是都要打的,因为这个有依赖关系,
然后并不是打出来的ab的md5变化不变化,才更新,而是这个ab里面的文件的md5是否有变化,以及引用变化,meta信息等,因此没有做过这块的肯定各种bug
A3: 切分支Unity要重新对于Library中的资源重新加载,会出现对应的变化。所以会建议单版本单分支出包。
同分支不同机器的问题的情况是用hashCode,不用MD5
是因为Unity本身的bug,资源的依赖子资源列表,会在不同机器上的顺序不一样的。想用crc就要对依赖的资源进行排序,确保依赖顺序一致解决在不同机器上打包不同的问题。