返回介绍

管理资源相关性

发布于 2021-06-19 18:03:26 字数 806 浏览 899 评论 0 收藏 0

资源包中的任何既定资源可能与其他资源相关。例如,一个模型可能包含会依次使用纹理和着色器的材质。您也可将资源的所有相关性一起添加到资源包中。但是,不同资源包中的多个资源可能都与一个常用的其他资源集相关(例如,多栋不同的建筑模型可能使用相同的砖块纹理)。如果有对象使用的每个资源包都包含独立的共享相关性副本,则将在加载资源包时创建多余的资源实例。这将浪费内存空间。

为避免此类浪费,可将共享的相关性分离至独立的资源包,并只从其资源需要此类相关性的任何资源包中引用相关性。首先,需要调用 BuildPipeline.PushAssetDependencies 来启用此引用功能。然后,需要构建包含已引用相关性的资源包。接下来,再次调用 PushAssetDependencies,再构建一个资源包,它引用第一个资源包中的资源。继续调用 PushAssetDependencies 可引入其他级别的相关性。引用级别存储在堆栈上,以便可使用相应的 BuildPipeline.PopAssetDependencies 函数返回至某级别。推送和弹出调用需通过添加构建之前发生的初始推送进行平衡。

运行时,需要加载包含相关性的资源包,然后再加载引用这些相关性的任何其他资源包。例如,您需要加载共享纹理的资源包,然后再加载引用这些纹理的独立的材质资源包。

注意,如果预计需要重新构建属于相关性链的资源包,则需先启用 BuildAssetBundleOptions.DeterministicAssetBundle 选项再进行构建。这可确保每次重新构建资源包时用于验证资源的内部 ID 值都相同。

返回资源包 (AssetBundles) 简介

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文