为了确保AssetBundle打出来的资源具有唯一性,做两方面考虑:
1 在做Assetbunlde包依赖时,必须这么选择(PushAssetDependencies,PopAssetDependencies)
2 在资源更新时,只有确保资源不会每次Build时都会产生不同的MD5值,才能确保资源的增量更新BuildPipeline.BuildAssetBundle 在build的时候添加一个选项 | BuildAssetBundleOptions.DeterministicAssetBundle 这样就能确保这份资源的唯一性。
遇到的问题:
DA目录下面的FA文件名为x.prefab,DB目录下面的FB文件名字也叫x.prefab。。在build Asset包的时候在StreamingAssets目录下面建立了DA和DB目录。
打包的时候FA文件打成了x.assetbundle放在DA目录下面; FB达成了x.AssetBundle 放在DB目录下面,根据常理知识:在不同的文件系统下面的两个文件应该不会冲突的。
然而在用www加载的时候:
www 先加载 DA下面的 x.assetbundle,(没有问题)
www 再加载DB下面的x.assetbundle(提示:can‘t be loaded because another asset bundle with the same files are already)
(多么的让人恼火啊,可能是我没有找到相关的文献,我翻了很多的文章也没有找到类似的问题和解决办法,如果有的话,也希望有人帮忙指一下~~)
解决办法:
如果不想破坏目录的结构也可保留但是要确保文件的唯一性,将DA下的x.assetbundle 更名为 da_x.assetbundle;DB下的x.assetbundle更名为:db_x.assetbundle 在执行的时候就不会有问题了。
(我尝试过,在build完之后 手动的把x文件改名,结果还是报错,这应该是build的时候在assetbundle文件里写入了文件名字的信息,就算手动改名文件内的名称也是不会改变的)