关注

为什么Resources文件夹中的资源文件重复出现在AssetBundle中,应该如何避免?

问题

  • Resources文件夹中的资源文件重复出现在AssetBundle中 

原因

如果AssetBundle中的资源引用了一个未被其它Bundle包含的资源,这个资源会被加入这个包中。这就意味着它在一个场景中被引用或者被另一个Bundle引用,这个资源就会重复。这也适用于Resource文件夹,因此Resources文件夹中的任何资源被添加到AssetBundle,它都会重复加载。这个做法为了防止AssetBundle损坏。

如果一个Bundle引用了某个不在bundle中的资源,可能存在一种情况bundle被打包,然后引用的资源被删除。这将会损坏这个Bundle,因为它被打包后资源引用被丢失了。

解决方案

明确区分Resources文件夹和AssetBundle非常重要。对于所有其它资源重要的是,
所有依赖资源都需要被标记到AssetBundle以防止重复。必须要确保AssetBundle和Resources之间没有依赖关系。

防止出现这种情况的一个简单方法是使用AssetDatabase.GetDependencies(fullAssetPath)来检查将要打包到AssetBundle中的每个资源的所有依赖项。 如果它返回存储在Resources文件夹中的资源,那么该资源应该从Resources文件夹中删除或不要标记到任何bundle中。 

更多信息

https://docs.unity3d.com/ScriptReference/AssetBundle.html

https://docs.unity3d.com/Manual/BuildingAssetBundles.html

 

这篇文章有帮助吗?
1 人中有 1 人觉得有帮助
还有其它问题?提交请求

0 评论

登录写评论。