ue3dUnity如果不先加载依赖项,AssetBundle可能会出错

Unity如果不先加载依赖项,AssetBundle可能会出错

分类:

AssetBundle是很方便的机制,但是如果什么都不考虑就制作的话,就会做出容量非常大的AssetBundle,一个AssetBundle与其他AssetBundle相关联,导致必须加载很多AssetBundle,导致浪费资源。

在这篇Unity文章中,将为大家总结一下不要制作臃肿的AssetBundle的注意事项。

将AssetBundle分成小块,消除重复的资产

例如,有一个预制件和它引用的材质。

一个预制件和它引用的材质

每个都有不同的AssetBundle名称,然后生成不同的AssetBundle,Prefab(预制件)的Assetbundle会附加这个依赖材质的信息。

在AssetBundle浏览器中看起来像这样。

AssetBundle浏览器

如果在此处删除材质的AssetBundle名称,则材质将自动合并到预制件的AssetBundle中。

删除材质AssetBundle名称,则材质将自动合并到预制件的AssetBundle中

合并AssetBundle的优点是可以减少文件数量,但需要注意重复。

例如,将以前的材质更改为引用其他预制件2,而2的AssetBundle名称与以前的预制件不同。然后,材质将在1和2中复制。

材质将自动复制

这是无用的,因为正在复制和存储相同的资源作为单独的数据,对于本文的案例很小,或许可以无视体积的小大,但是如果每次使用文本时都复制字体文件,那么它就会占用大量得空间,这时必然的。

当然AssetBundleBrowser还时会友情的警告有关此类AssetBundle的相关信息。

AssetBundleBrowser警告有关此类AssetBundle的相关信息

防止重复的最佳方法是将AssetBundle分解为更小的部分,如果将所有资源制作成一个单独的资源包,则暂时不会出现重复。

但是,内置资产引用的资产也有例外,可从下文了解相关知识。

AssetBundle总结

现在,如果像上一节一样将所有资源制作成单独的资源包,则重复项将被消除,但文件数量将增加。

不可避免地,AssetBundle之间的依赖关系也变得更加复杂。因此,对于大型项目,AssetBundle的加载时间很长。

在这种情况下,有必要在组织AssetBundle的同时注意重复,将它们放在一起是一个逐案且繁琐的过程,但这是一个重要的优化。

了解AssetBundle的依赖关系

充分了解AssetBundle之间的依赖关系也很重要。例如,假设具有各种网格和运动的FBX是AssetBundled。

AssetBundle之间的依赖关系

然后,创建一个仅引用此FBX中一个网格的预制件。此时,预制件仅使用一个网格,由于网格属于FBX AssetBundle,因此将加载此具有大量网格的AssetBundle。

其他的,动画事件也有各种各样的预制件,同一个atlas中包含的Sprite加上不同的AssetBundle名,导致atlas重复。

所以在设计资源时,充分理解并设计依存关系是很重要的。

以上是3D天堂网关于不先加载依赖项,AssetBundle可能会出错的全部内容,如果你有任何反馈,请随时在本页面下方留言。

相关信息

  • 类型:知识
  • 字数:811
  • 字符:2292
  • 适用软件:Unity
  • 说明:无
  • 编号:169144

热门内容

提示:3D天堂作为服务提供者,尊重网络版权及知识产权,对某些行为的发生不具备充分的监控能力,若无意间侵犯到您的权利,请 联系我们,我们会在收到信息后尽快给予处理。

本站文章版权归本站自创作者所有,未经允许不得转载!