# 欢迎使用 Cloud Content Delivery (CCD)

> Use Unity's managed cloud service for live game updates to host and deliver game content worldwide without app reinstalls.

Cloud Content Delivery (CCD) 是 Unity 的托管云服务，可托管内容并将其分发给应用程序在世界各地的用户，而无需重新安装应用程序新版本。此服务已完全集成到 Unity 开发平台中，可为您节省数个月构建和维护类似服务所需的时间。CCD 对于内容丰富的实时游戏或需要定期更新内容的应用程序最有价值。

## CCD 界面##ccd-interfaces

您可以通过多种方法将您的应用程序内容与 Cloud Content Delivery (CCD) 集成：

* [命令行界面 (CLI)](./cli.md) 是推荐用于与 CCD 交互的界面，因为它是您将内容上传到存储桶的主要机制（您也可以使用后台或 API 上传内容）。
* [Dashboard（后台）](./dashboard.md)提供与 CLI 相同的功能。
* [Content Delivery Management API](https://services.docs.unity.com/content-delivery-management) 和 [Content Delivery Client API](https://services.docs.unity.com/content-delivery-client) 允许您通过编程的方式来管理应用程序内容。
* [CCD Management SDK](https://docs.unity3d.com/Packages/com.unity.services.ccd.management@latest/index.html?subfolder=/manual/index.html) 允许您从编辑器内部管理 CCD 内容。此 SDK 与 [Addressables](https://docs.unity3d.com/Packages/com.unity.addressables@latest/index.html?subfolder=/manual/index.html) 包搭配使用，允许您从单个位置进行[构建和发布](https://docs.unity3d.com/Packages/com.unity.addressables@latest/index.html?subfolder=/manual/AddressablesCCD.html)。

## CCD 组织##ccdorganization

在 CCD 中，您可以将内容组织到每个环境的存储桶中，以便为项目创建清晰的工作流程。一个典型的工作流程示例是跨多个环境为每个平台设置单独的存储桶（例如，iOS 存储桶和 Android 存储桶）。您可以从生产环境开始，然后添加其他环境，例如开发环境和暂存环境。

在给定存储桶中，您可以对每个资源的特定版本进行分组以创建发布版本。当这些版本发生更改时，或者您添加和移除条目时，您可以根据需要指定新的发布版本。

发布版本还可以具有与之关联的唯一标识符，称为“标示”。为此标示指定一个有意义的名称，然后使用标示来查询内容，并在不同发布版本之间移动标示，从而提高工作流程的灵活性。

### 环境##environments

您可以在 [Unity Dashboard（Unity 后台）](https://dashboard.unity3d.com/)中创建环境。一个项目可以包含多个环境（例如生产环境、暂存环境和开发环境），但只有一个环境是默认环境。默认情况下，每个项目都有一个生产环境。

### 存储桶##buckets

通过使用 Cloud Content Delivery，您可以将内容组织到存储桶中，以便为项目创建清晰的工作流程。一个存储桶是用于发布内容的单一上下文。一个典型的工作流程示例是为不同的平台使用单独的存储桶，具有 `ios` 和 `android` 之类的名称。存储桶可能位于不同的环境中，例如生产环境和开发环境。存储桶可以是私有的，也可以是公共的。私有存储桶使用访问令牌来保护对存储桶的读取访问权限，因此只有具有该访问令牌的用户才能从这个存储桶中获取内容。您还可以将存储桶标记为“promotion only（仅推进）”，从而限制对该存储桶的写入访问权限，并防止错误（例如将错误的内容上传到错误的存储桶）。下图显示了 CCD 中显示的示例存储桶，包括其存储桶 ID、Promotion Only（仅推进）设置、Privacy（隐私）设置、描述以及存储桶中某个发布版本的详细信息。

| ![](/api/media?file=/ccd/media/images/ccd-buckets.png) |
| ------------------------------------------------------ |

您可以在 [Dashboard（后台）](./dashboard.md#buckets)中或通过 [CLI](./cli.md) 创建和编辑存储桶。

### 条目##entry

条目是存储桶中的单个内容单元。条目支持标签和元数据。创建[发布版本](#release)时会捕获存储桶中所有条目的当前状态，类似于版本控制过程。

| ![](/api/media?file=/ccd/media/images/ccd-entries.png) |
| ------------------------------------------------------ |

将条目上传到存储桶时会将本地文件夹的内容推送到远程存储桶，此过程会根据需要自动添加、更新和删除存储桶中的内容。CCD 支持多种文件类型的条目，最常见的类型是 .gzip、.txt 和 .bundle ([AssetBundles](https://docs.unity3d.com/Manual/AssetBundlesIntro.html))。

每个条目都包含以下信息：

* ID： 此条目的标识字符串。
* 路径： 此条目的位置。
* 内容类型：此字段通过 API 进行设置。
* 内容哈希： 此条目的 MD5sum 哈希值。
* 内容版本：一个条目每次更改时（例如，上传此文件的新版本、添加元数据时），该条目都会获得一个新的内容版本字符串。使用旧版本的字符串可确保您仍然可以访问被覆盖的旧文件。

### 发布版本##release

在创建一个发布版本时，CCD 会创建存储桶中包含的所有条目（当前版本）在该特定时间点的快照。若要移除、更新或添加条目，必须创建新的发布版本以便提供新的或更改的条目。您可以通过一个称为“推进”的过程在存储桶之间移动发布版本。

> **Note:**
>
> 创建或推进新的发布版本不会在存储桶中创建条目的副本。

### 标示##badge

借助“标示”可以选择应用程序使用的发布版本。您可以为一个发布版本分配一个唯一的标示，并使用该标示的名称来请求标示的内容。下图显示了 CCD 中出现的标示。

| ![](/api/media?file=/ccd/media/images/ccd-badges.png) |
| ----------------------------------------------------- |

您可以在不同发布版本之间移动此标示，从而提高内容工作流程的灵活性。移动一个标示会将这个标示从关联的上一个发布版本中移除。一次只能将一个标示分配给一个发布版本，但可以将多个不同的标示关联到一个发布版本。

默认情况下会将一个自动生成的名为 `latest` 的标示分配给最新的发布版本。
