英文原文:https://thegamedev.guru/unity-addressables/asset-bundle-browser/
Addressables 会为您完成这一切,这让您很容易信任该系统。
但是,您知道 Unity 可以悄无声息地将您的资产复制到不同的包中吗?
这对你来说意味着:更多的 RAM、更多的错误和更多的钱浪费在 CDN 上。
所以问题是,您知道您的资产包中真正隐藏着什么吗?
而且……您能信任 Unity 吗?
让我们找出答案。
在这篇博文中,我将向您展示:
- 为什么 Addressables 可以复制您的 addressables 内容
- 如何探索资产包的内容
- 如何减少您的资产包大小,从而减少支付给贪婪的 CDN 的费用并消耗更少的 RAM
内容
- 为什么 Unity Addressables 会欺骗你?
- 如何使用 Unity Asset Bundle Browsers 查看
- 如何修复 Unity Asset Bundle 资产重复
- 下一步是什么?
为什么 Unity Addressables 会欺骗你?
Unity Addressables 是一个可靠的系统,可以为您做很多事情,例如自动为您解决资产依赖关系。
那很好,但是……有时它可能做得太多了。
你看,当你将 asset bundle 生成委托给 Unity 时,系统会尽力将你的可寻址资产打包到它的组中。
然而,资产相互依赖性带来了一个大问题。
我怎么知道?
因为我深受其害。 我的一些客户也这样做了。
你不会喜欢这种惊喜,所以让我解释一下这对你有何影响。
为简单起见,我们假设您的游戏有 3 种类型的墙,它们具有不同的模型并共享一种材质。
您将每面墙放在不同的资产包中,猜猜会发生什么?
是的,材质及其所有纹理在每个资产包中都是重复的。
如果你有 4k 纹理,那就不好了。
你怎么知道纹理是重复的?
好吧,检查一下。
每个墙资产包都包含相同的资产,但网格除外。
这个问题会使您的资产包大小、烹饪时间和 CDN 成本飙升。
您也可以使用可寻址分析规则检测此类问题。 我将在另一篇文章中介绍。
那么,您如何像我向您展示的那样探索您的资产包内容?
如何使用 Unity Asset Bundle Browsers查看
首先,通过包管理器安装包。
然后,通过 Window → AssetBundle Browser 打开它
打开 Asset Bundle Browser 后,转到检查选项卡并添加您使用 Addressables API 生成的资产包。
这些包通常放在可寻址的库文件夹中,例如 库 com.unity.addressables StreamingAssetsCopy aa Windows StandaloneWindows64
添加 Unity 资产包后,您可以单击它们来检查其内容。
在 Advanced Data → Preload Table 中,您将能够看到您在此捆绑包中包含哪些子资产。
如果您看到其中一些资产在不同的包中重复,那么您就是在浪费空间。
好消息是修复它很容易。
如何修复 Unity Asset Bundle 资产重复
这些子资产重复的原因是因为它们没有标记为可寻址。
你看,你可以将这些 4k 纹理标记为可寻址并将它们扔到它们自己的包中。
Wall 资产包将依赖于包含纹理的单个资产包,而不是复制内容。
这是解释差异的图表。
结果?
您将拥有更小的捆绑包、更短的迭代时间,并且您将向贪婪的 CDN 支付更少的费用。
听起来不错。
请记住,如果您没有意识到这个问题,它就更相关了。
因此,花点时间检查一下这是否是您项目中的问题。
下一步是什么?
简而言之:
- Unity Addressables 使将资产分组到包中变得简单。
- 但是,捆绑包可能包含重复的内容。
- 重复的内容会增加迭代时间、存储要求和 CDN 成本。
- 您可以使用 Unity Asset Bundle Browser 检查您的资产包的内容。
- 您可以通过将共享资产提取到它们自己的包中来修复资产包重复。
- 或者,您可以使用 Addressables Analyze Rules,它可以为您解决问题。
这篇文章是基于 Unity Performance Checklist 的 Unity Performance Pillars 系列的一部分。
谢谢