Q&A——AssetBundle(资源打包)

来源:互联网 发布:妖精帝国知乎 编辑:程序博客网 时间:2024/05/17 01:38

Q1:如果我有一个Prefab,它的Dependencies都在Resources文件夹中,那么,当我在AssetBundle打包时,只打包这个Prefab(不指定BuildAssetBundleOptions.CompleteAssets和BuildAssetBundleOptionsCollectDependencies)的话,这个Prefab能够正确实例化吗?

这是不能正确实例化的,因为AssetBundle中的资源和Resource文件夹下资源是不会建立依赖关系的(脚本除外,因为开启BuildAssetBundleOptionsCollectDependencies 时,脚本依然不会打包到AssetBundle中)。所以会出现Mesh、Material等的丢失。


Q2:假设有两个界面Panel A和Panel B,它们均依赖一个共享Atlas C。AssetBundle打包时,如果我们将其分别打包的话,那么在使用时是否不能将AssetBundle C进行卸载?如果在加载Panel A和B之前,将Atlas C加载到内存中,但是将AssetBundle C进行卸载,那么在加载和实例化Panel A和B时,是否会出问题?

是的,不仅是Panel和Atlas,只要是A或B依赖于C,就必须保证在加载或实例化A或B时,C的AssetBundle一定存在于内存中。如果之前将C对应的AssetBundle进行卸载,则加载或实例化A和B时,引擎将无法自动将C绑定给A和B进行使用。
关于AssetBundle依赖性打包,我们已在之前的分享【揭开AssetBundle庐山真面目】中有所提及。
UWA已支持项目内成员相互邀请,共享测评数据。欢迎开发者邀请其他成员共同加入到项目中来,众志成城,成就优化大业!