CCD 和 Addressables 演练

您可以将 Unity 中的 Addressable Asset 系统与 CCD 结合使用,有效地为您的用户提供内容。此页面演示了如何使用云内容交付 (CCD) 和 Addressables 设置一个实际的 Unity 游戏项目,这使您可以轻松地将 Unity 编辑器中的资产管道集成到 CCD 中。

Note: The Addressables Asset System isn’t required for using CCD.

此工作流程提供了有关如何在 Unity 中使用 Loady Dungeons 示例项目执行以下任务的说明

  1. 在编辑器中配置 Addressables.
    1. 将游戏资产配置为可寻址.
    2. 配置 Addressables 配置文件.
  2. 将您的项目连接到 CCD.
  3. 为您的项目创建存储桶.
  4. 生成 AssetBundles 并上传内容,方法是 手动使用 CCD 管理软件包
  5. 提升发布.
  6. 测试您的游戏.

Note: This walkthrough uses Unity 2023.18f

先决条件

对于此工作流程,您需要安装 Loady Dungeon 示例项目。该项目预先安装了 Addressables Assets 软件包,但您也可以 从资产管理器安装软件包

下载并测试项目

要继续执行本演练,您需要做的第一件事是从 GitHub 下载我们示例游戏的最新版本,Loady Dungeons

然后您可以在 Unity 编辑器中测试该项目

  1. 在 Unity 编辑器中打开 Loady Dungeons 项目。
  2. 打开 MainMenu 场景,然后单击游戏选项卡。
  3. 在“纵横比”下拉菜单中,选择“+”图标。
  4. 创建一个新的“纵横比”类型的纵横比,宽度和高度分别为 9 和 16。这使游戏预览看起来更像是在手机上运行。
  5. 选择“确定”。
  6. 取消选中“低分辨率纵横比”。
  7. 选择编辑器“播放”按钮以试玩游戏。

Note: When you play the game in its initial state, you can't load the first level. As you progress through this workflow, you associate the required assets to use CCD with Addressables to fix this limitation.

安装 Addressable Assets 软件包

为了将资产标记为可寻址,您需要在 Unity 编辑器中直接安装 Addressables 软件包。

此项目已经预先安装了 Addressables 软件包,但如果您正在使用自定义项目或想要升级到新的验证版本,请通过 软件包管理器 安装 Addressables 软件包

  1. 选择“窗口”>“软件包管理器”。
  2. 搜索适用于您使用的 Unity 编辑器版本的 Addressables 最新验证版本。本示例使用版本 1.16.19。
  3. 选择您需要的版本,然后选择“安装”。

在编辑器中配置 Addressables

将游戏资产配置为可寻址

可寻址资产 提供了一种简便的方法来处理资产管理过载,方法是按地址加载资产。要按地址加载游戏资产,您需要将其标记为可寻址

  1. 在项目窗口中打开“场景”文件夹。

  2. 选择以下资产

    • Level_00
    • Level_01
    • Level_02
    • Level_03
  3. 在检查器窗口中,为每个资产选择“可寻址”。

  4. 选择“窗口”>“资产管理”>“Addressables”>“组”以打开 Addressables 组窗口。

  5. 选择“创建”>“组”>“打包的资产”,并创建以下新组

    • Level 00
    • Level 01
    • Level 02
    • Level 03
    • Hats
  6. 将场景资产从默认组拖动到相应的组。例如,将“Level_01”场景从默认组拖动到您创建的新“Level 01”组中。

  7. 在项目窗口(“预制件”>“Hats”)中,将 Hats 文件夹(不是文件夹本身)中的所有内容拖动到“Hats”组中。

  8. 选择 Addressables 组窗口中的每个资产,然后在检查器窗口中将其冗长的“可寻址”字段重命名为更简单的名称。

    Note: To automatically rename them, select all the assets, right-click, and select Simplify Addressable Names.

    • 将场景资产 Level_00 的“可寻址”字段重命名为 Level_00
    • 将场景资产 Level_01 的“可寻址”字段重命名为 Level_01
    • 将场景资产 Level_02 的“可寻址”字段重命名为 Level_02
    • 将场景资产 Level_03 的“可寻址”字段重命名为 Level_03
    • 将预制件资产 Hat00 的“可寻址”字段重命名为 Hat00
    • 将预制件资产 Hat01 的“可寻址”字段重命名为 Hat01
    • 将预制件资产 Hat02 的“可寻址”字段重命名为 Hat02
    • 将预制件资产 Hat03 的“可寻址”字段重命名为 Hat03

配置 Addressables 配置文件

要保存与游戏开发相关的所有关联设置,您可以创建一个新的 Addressables 配置文件

  1. 选择“窗口”>“资产管理”>“Addressables”>“组”。
  2. 从下拉菜单中选择“配置文件”>“管理配置文件”。
  3. 在 Addressables 配置文件窗口中,选择“创建”>“配置文件”以创建新配置文件。
  4. 右键单击新配置文件,然后选择“重命名配置文件”。将其命名为“Development Profile”。
  5. 右键单击“Development Profile”,然后选择“设为活动”。这将设置“Development Profile”为当前使用的配置文件。
  6. 构建您的 AssetBundle,它是一个包含游戏非代码资产的存档文件。
  7. 设置编辑器的播放模式以使用您的 AssetBundles 而不是本地资产
    1. 选择“窗口”>“资产管理”>“Addressables”>“组”。
    2. 从下拉菜单中选择“构建”>“新建构建”>“默认构建脚本”。
    3. 从下拉菜单中选择“播放模式脚本”>“使用现有构建”。

将您的项目连接到 CCD

在您设置好 Unity 编辑器中的 Addressables 之后,您可以将游戏项目连接到云内容交付 (CCD) 服务,最终利用 Addressables 和 AssetBundles。CCD 是一种托管云服务,可托管并向您应用程序的用户在全球范围内交付内容,无需重新安装应用程序的新版本。

要开始使用 CCD,请执行以下操作:

  1. 使用您的 Unity ID 登录 Unity 云仪表盘

  2. 在项目页面上,选择“新建”按钮。

    1. 将项目命名为“Loady Dungeons Workshop”。
    2. 选择“创建项目”。
  3. 打开您新的“Loady Dungeons Workshop”项目,并记下项目 ID。

  4. 选择“环境”选项卡。如果您还没有开发环境,请创建一个。

  5. 在仪表盘的“产品”页面中,找到并打开“云内容交付”。

Note: If you haven't used CCD before, you can refer to CCD in the Unity Cloud Dashboard for more information about how to set it up.

命令行界面(可选)

您还可以使用可选的命令行界面 (CLI) 来管理您的项目

  1. 下载适用于您的操作系统的 CLI
  2. 确保将 CLI 的文件夹包含在您的计算机的环境变量中。
  3. 打开命令行并导航到项目的文件夹。
  4. 键入以下命令以确保 CLI 已成功配置:ucd help

有关更多信息,请参阅 CCD 命令行界面 (CLI)

创建存储桶

您可以创建存储桶来帮助进行该项目的不同创建阶段。

  1. 从 CCD 着陆页中,选择左侧的 **存储桶**。

  2. 从项目下拉菜单中选择 **Loady Dungeons Workshop**(如果尚未选择)。

  3. 选择 **创建存储桶** 以创建新存储桶。

  4. 将存储桶命名为 `Loady Dungeons Sample`,并为存储桶提供可选的描述。

  5. 从以下选项中选择此存储桶的权限

    • **对所有人开放**:任何人都可以修改此存储桶中的内容。
    • **仅限促销**:所有者和管理者可以通过 促销 修改内容。任何人都无法上传或删除此存储桶中的内容。
  6. 要限制对该存储桶的读取访问权限,请选择 **启用存储桶隐私**。私有存储桶 仅允许具有访问令牌的用户读取内容。

    Note: You cannot change the bucket privacy settings after you create the bucket.

  7. 选择 **下一步**,并确保选中生产和开发环境。

  8. 选择 **创建**。

创建 Loady Dungeons Sample 存储桶后,它会出现在 Unity Cloud Dashboard 中的云内容交付存储桶页面上,用于开发和生产环境。您可以使用页面顶部的环境下拉菜单在环境之间切换。请注意两个环境中存储桶的 **存储桶 ID**,因为您需要在以后的远程加载路径中使用它们。

使用私有存储桶中的 Addressables

如果要从私有存储桶读取数据,则需要拥有有效的存储桶访问令牌。

从 Addressables 1.19.4 开始,您可以使用 WebRequestOverride 功能将存储桶访问令牌作为标题添加到请求中,以下示例演示了这一点

void Start()
{
	textComponent = GetComponent<Text>();
	Addressables.WebRequestOverride = webRequest =>
	{
		webRequest.SetRequestHeader("Authorization", "Basic "+token);
		//  Debug.Log($"Fetching: {webRequest.url}");
	};
	Addressables.LoadAssetAsync<TextAsset>("Assets/one.txt").Completed += handle =>
	{
		textComponent.text = handle.Result.text;
		// Debug.Log($"Text is now: {handle.Result.text}");
	};
}

在此示例中,`token` 是 base64 编码的存储桶访问令牌值。

手动生成 AssetBundles 并上传内容

Note: If you want to use the CCD Management package instead, skip to the Generate AssetBundles and upload content with CCD Management package section.

手动生成 AssetBundles

AssetBundle 是一个存档文件,包含 Unity 可以在运行时加载的平台特定的非代码资产。

要生成 AssetBundles

  1. 在 Unity 编辑器项目中,选择 **窗口** > **资产管理** > **Addressables** > **组**。

  2. 在配置文件下拉菜单中,确保选择了 **开发配置文件**。如果没有,请立即选择它。

  3. 在配置文件下拉菜单中,选择 **管理配置文件**。

  4. 在选中开发配置文件的情况下,设置以下内容

    • **RemoteBuildPath**:`AssetBundles/[BuildTarget]`,其中 `[BuildTarget]` 是默认子文件夹。

    • **RemoteLoadPath**:`https://PROJECT_ID.client-api.unity3dusercontent.com/client_api/v1/buckets/BUCKET_ID/release_by_badge/latest/entry_by_path/content/?path=`

      • 将 `PROJECT_ID` 替换为项目的 ID。要查找项目 ID,请单击 Unity Cloud Dashboard 角落中的用户名,然后选择 **帐户** > **项目管理** > **Loady Dungeons Workshop**。
      • 将路径中的 `BUCKET_ID` 替换为要使用的存储桶的 ID。在此示例中,选择在开发环境中创建的 Loady Dungeons Sample 存储桶。要查找 `BUCKET_ID`,请转到 Unity Cloud Dashboard 中的存储桶列表。
      • 路径中的 `latest` 指的是名为 最新 的徽章,这是分配给最新版本的自动生成的徽章。
  5. 返回 Addressables 组窗口,然后选择 **帽子**。

  6. 在检查器面板中,将这四组资产的构建路径和加载路径设置为我们为开发配置文件指定的路径

    • **构建路径**:RemoteBuildPath
    • **加载路径**:RemoteLoadPath
    • 对 Level 00、Level 01、Level 02 和 Level 03 重复此操作
  7. 在组窗口中,选择 **构建** 下拉菜单,然后选择 **新建构建** > **默认构建脚本**。这会将 AssetBundles 保存到 RemoteBuildPath 位置。

  8. 要使用我们制作的构建作为游戏测试的基础,请选择 **游戏模式脚本** > **使用现有构建**。

  9. 选择 Unity 编辑器中的 **播放** 按钮以测试游戏。在游戏中按 **开始**。请注意,游戏现在卡住了。

上传内容

此时,您可以将此内容上传到您之前在 CCD 中设置的开发存储桶中。

  1. 在 Unity Cloud Dashboard 中,转到 CCD 部分中的开发环境,然后选择 Loady Dungeons Sample 存储桶。
  2. 如果存储桶为空,请选择 **使用仪表板上传**;如果存储桶已包含条目,请选择 **上传内容**。
  3. 将内容从构建 AssetBundles 的文件夹拖放到 CCD 开发存储桶中,或者选择 **浏览** 按钮。您的文件位于指定为 `RemoteBuildPath` 的文件夹中。
  4. 选择 **上传 5 个文件**(四个级别和帽子)。
  5. 上传过程完成后,选择 **刷新页面** 以更新存储桶信息的状态。条目显示为未发布的更改。这意味着条目存在于存储桶中,但尚未打包到 版本 中。
  6. 要发布版本,请选择 **创建版本**。这会将您上传到开发环境中的 Loady Dungeons Sample 存储桶中的 AssetBundles 绑定到版本中。按照屏幕上的提示完成该过程。

CCD 会自动将自动创建的 `latest` 徽章应用于此版本,将其标记为在此存储桶中创建的最新版本。

Note: You can also use the CLI to upload content.

使用 CCD 管理包生成 AssetBundles 并上传内容

包含 Addressables 1.19.15+ 的 CCD 管理包允许您构建、上传和发布 Addressable 内容。

Note: You need to upgrade the Addressables versions and install the CCD Management package through the Package Manager.

  1. Select Window > Package Manager.
  2. Search for Addressables, select the version 1.19.15+, then Install.
  3. Search for CCD Management, select the version 2.0.1+, then Install.

生成 AssetBundles

  1. 在 Unity 编辑器项目中,选择 **窗口** > **资产管理** > **Addressables** > **组**。
  2. 在配置文件下拉菜单中,确保选择了 **开发配置文件**。
  3. 在配置文件下拉菜单中,选择 **管理配置文件**。
  4. 在配置文件窗口中,选择 **开发配置文件**,然后从 **远程** 下拉菜单中选择 **云内容交付**。

    Note: At this point if you don't already have the CCD Management package installed, Unity Editor prompts you to add it. Select the Install CCD Management SDK Package button to install it.

  5. 在下一个选项列表中,选择 Loady Dungeons Sample 存储桶,在随后的列表中,选择最新徽章。
  6. 返回 Addressables 组窗口,然后选择 **帽子**。
  7. 在检查器面板中,在 **内容打包和加载** 下,将这四组资产的构建路径和加载路径设置为为开发配置文件指定的路径对。有关路径对的更多信息,请参阅 配置文件概述
    • 设置 **构建和加载路径**:远程
    • 对 Level 00、Level 01、Level 02 和 Level 03 重复此操作
  8. 在组窗口中,选择构建下拉菜单,然后选择 **新建构建** > **默认构建脚本**。这会将 AssetBundles 保存到 RemoteBuildPath 位置。
  9. 要使用我们制作的构建作为游戏测试的基础,请选择 **游戏模式脚本** > **使用现有构建**。
  10. 选择 Unity 编辑器中的 **播放** 按钮以测试游戏。

在游戏中选择 **开始** 时,游戏现在卡住了。

上传内容

要将此内容生成、上传和发布到我们之前在 CCD 中设置的 Loady Dungeons Sample 存储桶中

  1. 在 Unity 编辑器项目中,单击 **窗口** > **资产管理** > **Addressables** > **组**。
  2. 选择 **构建和发布**。

CCD 管理包使用默认构建脚本行为来生成 Addressable 包。然后,管理包将上传与连接到 Loady Dungeons Sample 存储桶和我们之前设置的最新徽章的路径对关联的所有组到这些远程目标。最后,管理包为这些远程目标创建版本,并将它们的徽章更新为 `latest`。

提升版本

将资产上传到开发环境中的 Loady Dungeons Sample 存储桶后,并将这些资产绑定到版本中,您可以将这些最新更改公开发布。这就是我们还在生产环境中创建存储桶的原因。生产环境中的存储桶包含已准备好供玩家使用的版本。这意味着通过称为 促销 的过程将版本从开发环境中的存储桶移动到生产环境中的存储桶。

要将版本从开发环境中的存储桶提升到生产环境中的存储桶

  1. 在 Unity Cloud Dashboard 中,转到 Loady Dungeons Workshop CCD 项目,确保在环境下拉菜单中选择了开发环境,然后选择 Loady Dungeons Sample 存储桶。
  2. 选择 **提升版本**。
  3. 在 **目标环境** 下拉菜单中,选择 **生产**。
  4. 在 **目标存储桶** 下拉菜单中,选择 **Loady Dungeons Sample**。
  5. 添加可选的版本说明。
  6. 选择 **下一步**,然后按照屏幕上的提示操作。
  7. 选择 **提升版本**。

同样,CCD 会自动将自动创建的 `latest` 徽章应用于此版本,将其标记为在此存储桶中创建的最新版本。

在测试游戏之前,您需要修改配置文件变量以指向正确的存储桶。有两种方法可以做到这一点

  • 您可以为每个环境创建不同的玩家构建。两种构建都使用相同的内容,但对于部署构建,您需要启用调试符号并将 `bucket_id` 变量设置为开发环境中的存储桶。对于生产构建,您需要禁用调试符号并将 `bucket_id` 变量设置为生产环境中的存储桶。
  • 您可以使用配置文件变量中的静态属性或 TransformInternalId 来动态更改目录在运行时访问的存储桶。有关静态配置文件变量以及如何在 Addressables 中转换内部 ID 的更多信息,请参阅 更改资源 URL

测试您的游戏

  1. 在 Unity 编辑器中,选择编辑器的 **播放** 按钮。
  2. 在游戏中选择 **开始**。
  3. 在游戏中选择 **播放**。您现在可以在 Unity 编辑器中玩游戏。

在此工作流程中,您已成功将版本及其所有资产从开发环境移动到生产环境,准备作为功能齐全的游戏部署给用户。