unity Addressables[1]

Addressables

  Addressables 系统提供工具和脚本来组织和打包您的应用程序的内容,并提供一个 API 来在运行时加载和发布资产。

  当您将资产设为“可寻址”时,您可以使用该资产的地址从任何地方加载它。无论该资产位于本地应用程序中还是位于内容交付网络中,Addressable 系统都会定位并返回它。

  采用可寻址系统来帮助您在以下领域改进项目:

  • 灵活性:Addressables 使您可以灵活地调整托管资产的位置。您可以随应用程序安装资产或按需下载。您可以在项目的任何阶段更改访问特定资产的位置,而无需重写任何游戏代码。

  • 依赖管理:系统会自动加载您加载的任何资产的所有依赖项,以便在系统将内容返回给您之前加载所有网格、着色器、动画和其他资产。

  • 内存管理:系统卸载和加载资产,自动计算引用并提供强大的分析器来帮助您发现潜在的内存问题。

  • 内容打包:由于系统映射并理解复杂的依赖链,因此即使您移动或重命名资产,它也能高效地打包 AssetBundles。您可以为本地和远程部署准备资产,以支持可下载的内容并减小应用程序的大小。

入门

  在 Unity 项目中安装 Addressables 包后,您就可以开始使用了。

使用 Addressables 的基本步骤包括:

  • 使您的资产可寻址
  • 使用 Addressables API 在代码中引用和加载这些资产
  • 构建您的可寻址资产

  有关设置为使用可寻址资产的项目示例,请参阅 Addressables-Sample 存储库中的 Space Shooter 项目。

安装

要在安装后在项目中设置可寻址系统,请打开可寻址组窗口并单击创建可寻址设置。

在这里插入图片描述
  当您运行 Create Addressables Settings 命令时,Addressables 系统会创建一个名为 AddressableAssetsData 的文件夹,在其中存储设置文件和用于跟踪您的 Addressables 设置的其他资产。您应该将此文件夹中的文件添加到您的源代码管理系统。请注意,当您更改 Addressables 配置时,Addressables 可以创建其他文件。有关设置本身的更多信息,请参阅可寻址设置

使得资产可以寻址

您可以通过以下方式将资产标记为可寻址:

  • 选中资产检查器中的可寻址框:
    在这里插入图片描述
  • 将资产拖动或分配到检查器中的 AssetReference 字段:
    在这里插入图片描述
  • 将资产拖入 Addressables Groups 窗口中的一个组中:

在这里插入图片描述

  • 将资产放在标记为可寻址的项目文件夹中:
    在这里插入图片描述
      一旦您使资产可寻址,可寻址系统会将其添加到默认组中(除非您将其放置在特定组中)。当您进行内容构建时,Addressables 根据您的组设置将组中的资产打包到 AssetBundles 中。您可以使用 Addressables API 加载这些资产。

Note: 如果您将 Resources 文件夹中的资源设为可寻址,Unity会将资源移出 Resources 文件夹。您可以将资产移动到项目中的不同文件夹,但不能将可寻址资产存储在 Resources 文件夹中。

使用可寻址资产

  要加载可寻址资产,您可以:

  • 使用引用资产的 AssetReference
  • 使用它的地址字符串
  • 使用分配给资产的标签

  有关加载可寻址资产的更多详细信息,请参阅加载资产。
  加载可寻址资产使用异步操作。有关在 Unity 脚本中处理异步编程的不同方法的信息,请参阅操作。

TIP: 您可以在 Addressables-Sample 存储库中找到更多有关如何使用可寻址资产的示例。

使用资产引用

  要使用 AssetReference,请将 AssetReference 字段添加到 MonoBehaviour 或 ScriptableObject。创建该类型的对象后,您可以将资产分配给对象的检查器窗口中的字段。

NOTE:
如果您将不可寻址资产分配给 AssetReference 字段,Unity 会自动将该资产设为可寻址并将其添加到您的默认可寻址组中。 AssetReferences 还允许您在本身不是可寻址的场景中使用可寻址资产。

  Unity 不会自动加载或释放引用的资源;您必须使用 Addressables API 加载和释放资产:

有关加载 AssetReference 的更多信息,请参阅加载 AssetReference。

按地址加载

  您可以使用地址字符串加载资产
请记住,每次加载 Asset 时,还必须释放它
有关更多信息,请参阅加载单个资产。

按标签加载

  您可以在一次操作中加载具有相同标签的资产集
有关更多信息,请参阅加载多个资产。

管理可寻址资产

  要管理您的可寻址资产,请使用可寻址组窗口。使用此窗口创建可寻址组、在组之间移动资产以及为资产分配地址和标签。

  当您第一次安装和设置 Addressables 包时,它会为 Addressable 资产创建一个默认组。默认情况下,可寻址系统会将您标记为可寻址的任何资产分配给该组。在项目的早期阶段,您可能会发现将资产保留在这个单一组中是可以接受的,但是随着您添加更多内容,您应该考虑创建其他组,以便更好地控制应用程序加载和保留的资源任何给定时间的记忆。

关键组设置包括:

  • Build path:内容构建后保存内容的位置。
  • Load path:您的应用或游戏在运行时查找构建内容的位置。

NOTE: 您可以(并且通常应该)使用 Profile 变量来设置这些路径。有关详细信息,请参阅配置文件。

  • Bundle模式:如何将group内的内容打包成bundle。您可以选择以下选项:

    • 一个包含所有组资产的捆绑包
    • 组中每个条目的包(如果您将整个文件夹标记为可寻址并希望将它们的内容构建在一起,则特别有用)
    • 分配给组资产的每个唯一标签组合的捆绑包
  • 内容更新限制:适当设置此值允许您发布较小的内容更新。有关更多信息,请参阅内容更新版本。如果您总是发布完整版本来更新您的应用程序并且不从远程源下载内容,您可以忽略此设置。

  有关在决定如何组织资产时要考虑的策略的更多信息,请参阅组织可寻址资产。

有关使用可寻址组窗口的更多信息,请参阅组。

构建可寻址资产

  Addressables 内容构建步骤根据组设置和编辑器中设置的当前平台将 Addressables 组中的资产转换为 AssetBundles。

  在 Unity 2021.2+ 中,您可以配置 Addressables 系统以将您的 Addressables 内容构建为每个 Player 构建的一部分,或者您可以在进行 Player 构建之前单独构建您的内容。有关配置这些选项的更多信息,请参阅使用 Player 构建构建可寻址内容。

  如果您将 Unity 配置为作为Player build的一部分构建您的内容,请使用编辑器构建设置窗口上的正常构建或构建和运行按钮开始构建。 Unity 在构建player之前构建您的可寻址内容作为预构建步骤。

  在早期版本的 Unity 中,或者如果您将 Unity 配置为单独构建您的内容,您必须使用 Addressables Groups 窗口中的 Build 菜单构建 Addressables,如 [Making builds] 中所述。下次为项目构建player时,它会使用上次为当前平台运行的可寻址内容构建生成的工件。有关自动化 Addressables 构建过程的信息,请参阅 [构建脚本]

  要从可寻址组窗口启动内容构建:
在这里插入图片描述

  1. 打开 Addressables Groups 窗口(菜单:Windows > Asset Management > Addressables > Groups)。
  2. 从“Build”菜单中选择一个选项:
    – 新建:使用特定的构建脚本执行构建。如果您没有自己的自定义脚本,请使用默认构建脚本。
    – 更新以前的构建:基于现有构建构建更新。要更新之前的构建,Addressables 系统需要由早期构建生成的 addressables_content_state.bin 文件。您可以在 Unity 项目的 Assets/AddressableAssetsData/Platform 文件夹中找到此文件。有关更新内容的更多信息,请参阅内容更新。
    – Clean Build:删除缓存的构建文件。

  默认情况下,构建会在您的配置文件设置中为 LocalBuildPath 和 RemoteBuildPath 变量定义的位置创建文件。 Unity 用于您的player构建的文件包括 AssetBundles (.bundle)、目录 JSON 和哈希文件以及设置文件。

WARNING:
在大多数情况下,您不应更改本地构建或加载路径的默认值。如果这样做,在进行 Player构建之前,您必须将本地构建工件从您的自定义构建位置复制到项目的 StreamingAssets文件夹中。更改这些路径还排除了将您的可寻址对象构建为 Player 构建的一部分。

  如果您有构建到 RemoteBuildPath 的组,则您有责任将这些 AssetBundle、目录和哈希文件上传到您的托管服务器。 (如果您的项目不使用远程内容,请将所有组设置为使用本地构建和加载路径。)

  内容构建还会创建 Addressables 不直接在播放器构建中使用的以下文件:

  • addressables_content_state.bin:用于进行内容更新构建。如果您支持动态内容更新,则必须在每次内容发布后保存此文件。否则,您可以忽略此文件。
  • AddressablesBuildTEP.json:记录构建性能数据。请参阅构建分析。

  有关如何设置和执行内容构建的更多信息,请参阅构建可寻址内容。

开始完整的内容构建

要进行完整的内容构建:

  1. 在构建设置窗口中设置所需的平台目标。
  2. 打开可寻址组窗口(菜单:资产管理 > 可寻址 > 组)。
  3. 从 Groups 窗口的 Build 菜单中选择 __ New Build > Default Build Script__ 命令。

构建过程开始。

  构建完成后,您可以执行player构建并将任何远程文件从您的 RemoteBuildPath 上传到您的托管服务器。

IMPORTANT
  如果您计划在不重新构建应用程序的情况下发布远程内容更新,则必须为每个发布的构建保留addressables_content_state.bin文件。如果没有此文件,您只能创建完整的内容构建和播放器构建,而不能创建更新。有关更多信息,请参阅内容更新版本。

远程内容分发

  您可以使用 Addressables 支持通过内容交付网络 (CDN) 或其他托管服务远程分发内容。 Unity 为此提供了 Unity Cloud Content Delivery (CCD) 服务,但您可以使用任何您喜欢的 CDN 或主机。

  在构建用于远程分发的内容之前,您必须:

  • 在 AddressableAssetSettings 中启用 Build Remote Catalog 选项(使用菜单访问:Windows > Asset Management > Addressables > Settings)。
  • 在用于发布内容的配置文件中配置 RemoteLoadPath 以反映您计划访问内容的远程 URL。
  • 对于包含要远程交付的资产的每个 Addressables 组,将构建路径设置为 RemoteBuildPath,将加载路径设置为 RemoteLoadPath。
  • 在 Unity Build Settings 窗口中设置所需的 Platform Target。

  在您进行内容构建(使用可寻址组窗口)和player构建(使用构建设置窗口)之后,您必须将在您的配置文件的 RemoteBuildPath 指定的文件夹中创建的文件上传到您的托管服务。要上传的文件包括:

  • AssetBundles (name.bundle)
  • Catalog (catalog_timestamp.json)
  • Hash (catalog_timestamp.hash)

有关更多信息,请参阅分发远程内容。

增量内容更新

  当您远程分发内容时,您可以通过发布增量内容更新版本来减少用户为更新而需要下载的数据量。增量更新构建允许您发布仅包含自上次发布更新以来发生更改的资产的远程包,而不是重新发布所有内容。这些较小的更新包中的资产会覆盖现有资产。

IMPORTANT
如果您希望拥有发布增量更新的选项,则必须在发布player构建之前打开构建远程目录选项。如果没有远程目录,已安装的应用程序不会检查更新。

  有关内容更新的更多详细信息(包括示例),请参阅内容更新版本。

开始内容更新构建

  进行内容更新,而不是完整构建:

  1. 在 Build Settings 窗口中,设置 Platform Target 以匹配您现在正在更新的先前内容构建的目标。
  2. 打开可寻址组窗口(菜单:Asset Management > Addressables > Groups)。
  3. 从工具菜单中,运行检查内容更新限制命令。构建数据文件浏览器窗口打开。
  4. 找到之前构建生成的 addressables_content_state.bin 文件。此文件位于以目标平台命名的 Assets/AddressableAssestsData 子文件夹中。
  5. 单击Open。 “Content Update Preview”窗口搜索更改并标识必须移动到新组以进行更新的资产。如果您没有更改设置为“无法更改发布后”的组中的任何资产,则预览中将不会列出任何更改。 (当您将组中的资产更改为“可以更改发布后”时,Addressables 会为该组重建所有 AssetBundles;在这种情况下,Addressables 不会将更改的资产移动到新组。)
  6. 单击apply更改以接受任何更改
  7. 从“build”菜单中,运行 Update a Previous Build 命令。
  8. 打开之前构建生成的addressables_content_state.bin文件

构建过程开始。
  构建完成后,您可以将文件从 RemoteBuildPath 上传到您的托管服务器。

IMPORTANT
Addressables 使用 addressables_content_state.bin 文件来识别您更改了哪些资产。您必须为每个已发布的构建保留此文件的副本。如果没有该文件,您只能创建完整的内容构建,而不能创建更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值