# Cloud Code C# 模块

> Deploy reusable, server authoritative C# libraries that allow multiple entry points and generate type-safe client bindings.

这些模块是 C# 库，Cloud Code 服务可以运行这些库，为您提供可重用的服务器授权代码。与 Cloud Code 脚本不同，模块允许使用多个入口点，并在模块内更轻松地重用代码。

您可以从 Unity 编辑器为您的模块生成绑定，以确保在 Cloud Code 客户端和游戏之间传输的数据使用相同的格式。

您可以从使用 Unity 构建的游戏或任何其他客户端或服务器调用模块。

| 创作方法                                                                         | 描述                                                                                                                     |
| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| [Unity 编辑器](./how-to-guides/write-modules/unity-editor.md)                   | 使用 Unity 编辑器通过 Deployment（部署）窗口创建和部署模块，自动执行工作流程，以及将 Cloud Code 与其他 Unity 服务一起部署。                                       |
| [Unity Gaming Services（Unity 游戏服务）CLI](./how-to-guides/write-modules/cli.md) | 使用 CLI 从命令行部署和管理模块。一次部署多个 Unity 服务配置，并与 CI/CD 集成。                                                                      |
| [Unity Dashboard](./how-to-guides/write-modules/unity-dashboard.md)          | 使用 Unity Dashboard 预览已部署的模块的列表。您可以从同一位置访问其他 Unity Gaming Services（Unity 游戏服务）服务，例如 [Remote Config](/remote-config.md)。 |
| [REST API](./how-to-guides/write-modules/rest-api.md)                        | 使用 REST API 创建、部署和管理模块。                                                                                                |

> **Note:**
>
> Cloud Code C# 模块不能使用 `UnityEngine` 命名空间中的类或 \[Unity 脚本 API] 中的任何其他内容。这是因为 Cloud Code 使用开源的 \[.NET 运行时]（最高支持版本 9）。此运行时不同于 Unity Runtime，不依赖于其任何 \[脚本后端]。

## 典型工作流程##typical-workflow

以下过程详细介绍了一个典型的开发周期：

1. [创建 C# 库项目](./getting-started.md)。在 [Unity 编辑器](./getting-started.md)中创建一个解决方案，或者使用 [UGS CLI](./how-to-guides/write-modules/cli.md) 创建一个新的模块项目。
2. [编写代码](./how-to-guides/write-modules.md)。使用 Cloud Code C# 服务 SDK 与其他 [Unity 服务](./how-to-guides/unity-services-integration.md)集成。使用 HTTP 客户端[与外部服务集成](./how-to-guides/external-services-integration.md)。
3. [测试和调试](./how-to-guides/unit-testing.md)。为模块创建单元测试项目以验证一切是否按预期工作，或在开发环境中部署库以使用真实用户数据对其进行测试。
4. [部署该模块](./getting-started.md#deploy-the-module)。通过 [Unity 编辑器中的 Deployment（部署）窗口](./getting-started.md#deploy-the-module)或 [UGS CLI](./how-to-guides/write-modules/cli.md) 部署项目，或使项目在 Cloud Code 中可用。
5. [将模块与您的项目集成](./getting-started.md#call-a-module-function-from-your-game)。将 Cloud Code SDK 导入到您的游戏中，并使用提供的方法之一调用您的脚本。

## 开始使用##getting-started

了解创建和运行模块的基础知识。

| 主题                                          | 描述                                                                                                                                                                                             |
| ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [创建模块](./getting-started.md)                | 开始使用模块。                                                                                                                                                                                        |
| [模块结构](./how-to-guides/module-structure.md) | 了解模块项目的结构。                                                                                                                                                                                     |
| [编写模块](./how-to-guides/write-modules.md)    | 了解如何使用 [Unity 编辑器](./how-to-guides/write-modules/unity-editor.md)、[UGS CLI](./how-to-guides/write-modules/cli.md) 或 [REST API](./how-to-guides/write-modules/rest-api.md) 编写模块。                |
| [运行模块](./how-to-guides/run-modules.md)      | 了解如何从 [Unity Runtime](./how-to-guides/run-modules/unity-runtime.md)、使用 [REST API](./how-to-guides/run-modules/rest-api.md) 或从 [Multiplay 服务器](./how-to-guides/run-modules/game-server.md)运行模块。 |
| [错误处理](./how-to-guides/error-handling.md)   | 了解如何处理模块中的错误。                                                                                                                                                                                  |
| [Logging](../logging/overview)              | 了解如何使用日志记录来调试模块。                                                                                                                                                                               |
| [限制](./reference/limits.md)                 | 了解 Cloud Code 模块的限制。                                                                                                                                                                           |
| [成本](./reference/cost.md)                   | 了解 Cloud Code 模块的成本。                                                                                                                                                                           |

## 开发要点##development-essentials

了解如何构建您的模块。模块支持依赖项注入、DTO 和自定义序列化，使开发更简单。

| 主题                                                                   | 描述                                    |
| -------------------------------------------------------------------- | ------------------------------------- |
| [模块结构](./how-to-guides/module-structure.md)                          | 了解模块项目的结构。                            |
| [依赖项注入](./how-to-guides/initialize-modules/dependency-injection.md)  | 了解如何在代码中分离依赖项。                        |
| [单元测试](./how-to-guides/unit-testing.md)                              | 了解如何为模块编写单元测试。                        |
| [自定义序列化](./how-to-guides/initialize-modules/custom-serialization.md) | 了解如何使用具有 `Newtonsoft.Json` 属性的自定义序列化。 |
| [批处理请求](./how-to-guides/batch-requests.md)                           | 了解如何批量处理请求。                           |

## 自动部署##automate-deployment

为了简化模块的开发和部署，您可以自动执行该过程。

| 主题                                                       | 描述                      |
| -------------------------------------------------------- | ----------------------- |
| [与 CI/CD 集成](./how-to-guides/automation.md)              | 将模块的部署与 CI/CD 管线集成。     |
| [自动执行本地部署](./how-to-guides/automate-local-deployment.md) | 自动将模块部署到 Cloud Code 服务。 |

## 进一步集成##integrate-further

您可以将模块与其他 Unity Gaming Services（Unity 游戏服务）服务和任何外部服务集成，并访问跨玩家数据。

要使用 C# SDK 与其他服务集成，可以安装 `NuGet` 包，也可以使用 HTTP 客户端。

| 主题                                                            | 描述                               |
| ------------------------------------------------------------- | -------------------------------- |
| [身份验证](./how-to-guides/authentication.md)                     | 了解如何使用 Cloud Code 对游戏客户端进行身份验证。  |
| [服务令牌和访问令牌支持](./how-to-guides/token-support.md)               | 了解 Cloud Code 支持哪些 UGS 服务和访问令牌。  |
| [可用库](./reference/available-libraries.md)                     | 查找 Cloud Code 模块附带的可用 UGS SDK。   |
| [访问控制](./how-to-guides/access-control.md)                     | 了解如何控制访问并防止不必要的使用。               |
| [与 Unity 服务集成](./how-to-guides/unity-services-integration.md) | 了解如何将 Cloud Code 连接到其他 Unity 服务。 |
| [与外部服务集成](./how-to-guides/external-services-integration.md)   | 了解如何与外部服务集成。                     |
| [处理跨玩家数据](./how-to-guides/cross-player-data.md)               | 了解如何访问和更新其他玩家的数据。                |
| [向玩家发送推送消息](./how-to-guides/push-messages.md)                 | 了解如何向玩家发送推送消息。                   |
| [Triggers](../triggers/overview)                              | 了解如何使用触发器按计划运行模块或为了响应事件运行模块。     |

## 高级配置##advanced-configuration

如果您需要对模块进行更深入的配置，可以参考以下指南。

> **Important:**
>
> **重要**：这些主题适用于想要针对特定​​用例优化其模块的高级用户。

| 主题                                                                                             | 描述                                                   |   |
| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------- | - |
| [手动工作流程](./how-to-guides/manual-workflow.md)                                                   | 了解如何手动创建、打包和部署模块。                                    |   |
| [打包代码](./how-to-guides/package-code.md)                                                        | 了解如何将模块代码打包到 `.ccm` 文件中进行部署。                         |   |
| [使用项目文件自动进行本地部署](./how-to-guides/automate-local-deployment.md#automate-using-the-project-file) | 使用项目文件自动部署模块。                                        |   |
| [数据传输对象](./how-to-guides/initialize-modules/dto.md)                                            | 了解如何使用数据传输对象来确保在 Cloud Code 客户端和游戏之间传输的所有数据都使用相同的格式。 |   |
