集成 Asset Delivery (Unity)

集成 Asset Delivery 时,Unity 游戏可以使用 Addressables 或 AssetBundle 访问资源包。Addressables 是最近推出且推荐使用的 Asset Delivery 解决方案,适用于使用 Unity 2019.4 或更高版本构建的游戏;AssetBundle 则支持 Unity 2017.4 和 2018.4 中的资源包。

Unity Addressables

使用 Unity 2019.4 或更高版本构建的游戏应将 Addressables 用于 Android 设备上的 Asset Delivery。Unity 会提供 Play Asset Delivery (PAD) API,以便使用 Addressables 来处理 Android 资源包。如需了解如何使用 Addressables,请参阅以下资源:

使用 AssetBundle 文件

使用 Unity 2017.4 和 2018.4 构建的游戏可以将 AssetBundle 文件用于 Android 设备上的 Asset Delivery。Unity AssetBundle 文件包含可在应用运行时由 Unity 引擎加载的序列化资源。这些文件是平台专用的(例如,针对 Android 构建),并且可与资源包结合使用。最常见的情况是,将一个 AssetBundle 文件打包成单个资源包,并且资源包与 AssetBundle 使用相同的名称。如果您希望更灵活地创建资源包,请使用 API 配置资源包。

在运行时,可使用 Play Asset Delivery for Unity 类来检索打包在资源包中的 AssetBundle。

前提条件

  1. 设置开发环境:

OpenUPM-CLI

如果您已安装 OpenUPM CLI,则可以使用以下命令安装 OpenUPM 注册表:

openupm add com.google.play.assetdelivery

OpenUPM

  1. 依次选择 Unity 菜单选项 Edit(修改)> Project Settings(项目设置)> Package Manager(资源包管理器),打开资源包管理器设置。

  2. 在资源包管理器窗口中,将 OpenUPM 添加为限定范围的注册表:

    Name: package.openupm.com
    URL: https://package.openupm.com
    Scopes: com.google.external-dependency-manager
      com.google.play.common
      com.google.play.core
      com.google.play.assetdelivery
      com.google.android.appbundle
    
  3. 依次选择 Unity 菜单选项 Window(窗口)> Package Manager(资源包管理器),打开资源包管理器菜单。

  4. 在管理器范围下拉菜单中,选择 My Registries(我的注册表)。

  5. 从资源包列表中选择 Google Play Integrity plugin for Unity(适用于 Unity 的 Google Play Integrity 插件)资源包,然后按 Install(安装)。

从 GitHub 导入

  1. 从 GitHub 下载最新的 .unitypackage 版本。

  2. 导入 .unitypackage 文件,方法是依次选择 Unity 菜单选项 Assets(资源)> Import package(导入资源包)> Custom Package(自定义资源包),然后导入所有项目。

  1. 在 Unity 中创建 AssetBundle。

使用界面配置 AssetBundle

  1. 配置资源包中的每个 AssetBundle:

    1. 依次选择 Google > Android App Bundle > Asset Delivery Settings。
    2. 如需选择直接包含 AssetBundle 文件的文件夹,请点击 Add Folder。

    Unity 中的“Asset Delivery Settings”(资源分发设置)“Add Folder”(添加文件夹)按钮

  2. 针对每个 Bundle,将 Delivery Mode 更改为 Install Time、Fast Follow 或 On Demand。解决所有错误或依赖项,然后关闭窗口。

    Unity 中每个 bundle 的 Asset Delivery 分发模式选择器

  3. 依次选择 Google > Build Android App Bundle 以构建 App Bundle。

  4. (可选)配置 App Bundle 以支持不同的纹理压缩格式。

使用 API 配置资源包

您可以通过能作为自动化构建系统的一部分运行的编辑器脚本配置 Asset Delivery。

使用 AssetPackConfig 类定义需要包含在 Android App Bundle build 中的资源,以及这些资源的分发模式。这些资源包无需包含 AssetBundle。

public void ConfigureAssetPacks {
   // Creates an AssetPackConfig with a single asset pack, named
   // examplePackName, containing all the files in path/to/exampleFolder.
   var assetPackConfig = new AssetPackConfig();
   assetPackConfig.AddAssetsFolder("examplePackName",
                                   "path/to/exampleFolder",
                                   AssetPackDeliveryMode.OnDemand);

   // Configures the build system to use the newly created assetPackConfig when
   // calling Google > Build and Run or Google > Build Android App Bundle.
   AssetPackConfigSerializer.SaveConfig(assetPackConfig);

   // Alternatively, use BundleTool.BuildBundle to build an App Bundle from script.
   BuildBundle(new buildPlayerOptions(), assetPackConfig);
}

在给定 BuildPlayerOptions 和 AssetPackConfig 的情况下,您还可以在 Bundletool 类中使用静态 BuildBundle 方法生成具有资源包的 Android App Bundle。

如需指导教程,请参阅“在 Unity 游戏中使用 Play Asset Delivery”Codelab。

与 Play Asset Delivery Unity API 集成

Play Asset Delivery Unity API 提供了用于请求资源包、管理下载内容和获取资产的功能。请务必先将 Unity 插件添加到您的项目中。

您在该 API 中使用的函数取决于您创建资源包的方式。

如果您使用插件界面创建资源包,请选择插件配置的资源包。

如果您使用 API(或插件界面)创建资源包,请选择 API 配置的资源包。

后续步骤

在本地和通过 Google Play 测试 Asset Delivery 情况。