# Unity 编辑器

> Create and deploy Cloud Code modules using the Unity Editor and Deployment package.

您可以使用 Unity 编辑器来创建和部署 Cloud Code 模块。Cloud Code 包中包含的 Cloud Code Authoring 模块允许使用 [Deployment 包](https://docs.unity3d.com/Packages/com.unity.services.deployment@latest)来处理模块。

> **Note:**
>
> > **Note:**
> >
> > **注意：** 仅 Unity 2021.3 及更高版本支持在 Unity 编辑器中集成模块。

## 先决条件##prerequisites

要在 Unity 编辑器中使用 Cloud Code，请按照以下步骤操作。

### 关联项目##link-project

将 [Unity Gaming Services（Unity 游戏服务）项目](/cloud/projects.md)与 Unity 编辑器关联。您可以在 Unity Dashboard 中找到您的 UGS Project ID。

1. 在 Unity 编辑器中，选择 **Edit（编辑）**> **Project Settings（项目设置）**> **Services（服务）**。

2. 关联您的项目。

   * 如果项目没有 Unity Project ID：

     1. 选择 **Create a Unity Project ID（创建 Unity Project ID）**> **Organizations（组织）**，然后从下拉菜单中选择一个组织。
     2. 选择 **Create project ID（创建 Project ID）**。

   * 如果已有 Unity Project ID：

     1. 选择 **Use an existing Unity project ID（使用现有 Unity Project ID）**。
     2. 从下拉菜单中选择组织和项目。
     3. 选择 **Link project ID（关联 Project ID）**。

此时将显示您的 Unity Project ID，并且项目现在已关联到 Unity 服务。

此外，还可以使用 `UnityEditor.CloudProjectSettings.projectId` 参数在 Unity 编辑器脚本中访问您的 Project ID。

### 安装所需的包##install-required-packages

要在编辑器中创建 Cloud Code 模块，必须安装以下包：

* Deployment
* Cloud Code（2.6.1 或更高版本）

> **Note:**
>
> > **Note:**
> >
> > **注意：** 请查看 [Unity - 手册：Package Manager（包管理器）窗口](https://docs.unity3d.com/Manual/upm-ui.html)，熟悉 Unity Package Manager（包管理器）界面。

请安装这些包，并将它们添加到可用包的列表中：

1. 在 Unity 编辑器中选择 **Window（窗口）**> **Package Manager（包管理器）** 以打开 Package Manager（包管理器）窗口。
2. 在 Unity 编辑器的 Package Manager（包管理器）窗口中，选择 **+**（添加）> **Add package by name...（按名称添加包...）**。
3. 输入 `com.unity.services.deployment`。
4. 选择 **Add（添加）**。
5. 对 `com.unity.services.cloudcode` 重复以上步骤。

### 安装 .NET##install-net

要在编辑器中部署 Cloud Code 模块，您需要先安装 [.NET](https://dotnet.microsoft.com/en-us/)。

按照以下步骤在编辑器中设置默认的 .NET 路径：

1. 在 Unity 编辑器中，打开 **Preferences（偏好设置）** 窗口。
   * 在 Windows 上，选择 **Edit（编辑）**> **Preferences...（偏好设置...）**> **Cloud Code**。
   * 在 macOS 上，选择 **Unity** > **Settings...（设置...）**> **Cloud Code**。
2. 在 **.NET development environment（.NET 开发环境）** 部分中，将 **.NET path（.NET 路径）** 修改为实际安装路径。
3. 选择 **Apply（应用）**。

## 预览 Deployment（部署）窗口##preview-the-deployment-window

在 Deployment（部署）窗口中可以将 Cloud Code 模块部署到远程环境。如果安装了 Deployment 包，则可以从 Unity 编辑器访问该包。

* 在 Unity 编辑器版本 2021.3+ 中：选择 **Window（窗口）**> **Deployment（部署）**。
* 在 Unity 编辑器版本 2022+ 中：选择 **Services（服务）**> **Deployment（部署）**。

在使用 Deployment（部署）窗口之前，必须选择要部署到的环境。

1. 在 Unity 编辑器中，打开 [Deployment（部署）窗口](#preview-the-deployment-window)。
2. 在 Deployment（部署）窗口中，选择 **Deployment Settings（部署设置）**。
3. 从新的 Environments（环境）窗口的 **Editor Environment（编辑器环境）** 下拉选单中选择一个环境。

> **Note:**
>
> > **Note:**
> >
> > **注意**：Deployment（部署）窗口还支持其他 Unity Gaming Services（Unity 游戏服务）服务。如果您的 Cloud Code 模块依赖于其他服务，您可以同时部署更改。

请参阅 [Deployment（部署）窗口](https://docs.unity3d.com/Packages/com.unity.services.deployment@latest/index.html?subfolder=/manual/deployment_window.html)以了解更多信息。

## 在 Unity 编辑器中创作##author-within-unity-editor

安装的 Cloud Code 包中包含 Cloud Code Authoring 模块。借助该模块可以直接从 Unity 编辑器创建和部署 Cloud Code 模块。

为此，请在编辑器中创建一个模块引用文件，并将此文件关联到模块项目。配置完成后，在 Deployment（部署）窗口中可以将模块部署到远程环境。

### 创建 C# 模块引用文件##create-a-c-module-reference-file

首先，创建一个 Cloud Code C# 模块引用文件。该文件引用一个包含需要部署的 C# 模块项目的解决方案。

1. 在 Unity 编辑器的 Project（项目）窗口中右键单击，然后选择 **Create（创建）**> **Services（服务）**> **Cloud Code C# Module Reference（Cloud Code C# 模块引用）**。
2. 按照模块名称命名模块引用，以避免混淆。
3. 按 **Enter（输入）**。

> **Note:**
>
> > **Note:**
> >
> > **注意**：部署的模块与解决方案中的主项目同名。


**Frame:**
![](/api/media?file=/cloud-code/media/images/create-ref-file.png)

现在，新的模块引用会显示在 Project（项目）窗口和 Deployment（部署）窗口中。要访问模块引用，请打开 [Deployment（部署）窗口](#preview-the-deployment-window)。

### 关联模块##link-a-module

C# 模块引用需要关联到模块。您可以关联现有模块，也可以从 Unity 编辑器生成新模块。

#### 生成新模块##generate-a-new-module

利用模块引用文件可以从 Deployment（部署）窗口生成新模块。生成的模块包含开始开发模块所需的基本设置。

1. 在 Unity 编辑器的 Project（项目）窗口中选择模块引用文件。
2. 在 [Inspector（检视面板）](https://docs.unity3d.com/Manual/UsingTheInspector.html)窗口中，选择 **Generate Solution（生成解决方案）**。

还可以直接从 Deployment（部署）窗口生成一个新模块。

1. 在 Unity 编辑器中，打开 [Deployment（部署）窗口](#preview-the-deployment-window)。
2. 右键单击模块引用文件，然后选择 **Generate Solution（生成解决方案）**。


**Frame:**
![](/api/media?file=/cloud-code/media/images/module-generate-solution.png)

此过程会将生成的模块放置在项目目录的根目录中。Cloud Code 使用引用文件名来生成默认解决方案路径。解决方案文件名是 Cloud Code 用于生成模块模板的解决方案路径。

例如，如果您将引用文件命名为 `test_module.ccmr`，则默认解决方案路径可能是 `../test_module`，这种情况下会在 `test_module.sln` 解决方案文件下创建一个模块。

#### 关联现有模块##link-an-existing-module

如果要使用其他创作方法来创建新模块，请参阅[编写模块](../write-modules)。模块引用附带默认解决方案路径。应更改此路径以指向现有模块解决方案。

1. 在 Unity 编辑器的 Project（项目）窗口中选择模块引用文件。
2. 在 [Inspector（检视面板）](https://docs.unity3d.com/Manual/UsingTheInspector.html)窗口中，修改 **Solution Path（解决方案路径）** 字段以指向现有模块解决方案。

### 生成绑定##generate-bindings

您可以从 Unity 编辑器生成类型安全 (type-safe) 的客户端代码。从模块引用文件生成的绑定可用于调用模块终端。类型安全 (type-safe) 的客户端将保证游戏客户端使用的类型和模块接收的类型匹配，确保不存在序列化问题。

您可以从以下位置生成绑定：

* 从 Inspector（检视面板）窗口生成：

  1. 在 Unity 编辑器的 Project（项目）窗口中选择模块引用文件。
  2. 在 [Inspector（检视面板）](https://docs.unity3d.com/Manual/UsingTheInspector.html)窗口中，单击 **Generate Bindings（生成绑定）**。

* 从 Deployment（部署）窗口生成：
  1. 在 Unity 编辑器中，打开 [**Deployment（部署）窗口**](#preview-the-deployment-window)。
  2. 右键单击 Cloud Code 模块引用，然后选择 **Generate Code Bindings（生成代码绑定）**。

* 从工具栏生成：
  1. 导航到 **Services（服务）**> **CloudCode**，然后选择 **Generate CloudCode Bindings（生成 CloudCode 绑定）**。
  2. 此做法将为所有现有模块引用生成绑定。

* 从 Project Settings（项目设置）生成：
  1. 在 Unity 编辑器中，导航到 **Edit（编辑）**> **Project Settings（项目设置）**。
  2. 导航到 **Services（服务）**> **Cloud Code**，然后选择 **Generate All Module Bindings（生成所有模块绑定）**。
  3. 此做法将为所有现有模块引用生成绑定。

Unity 编辑器在 `Assets/CloudCode/GeneratedModuleBindings` 目录下生成类型安全 (type-safe) 的客户端代码。

> **Note:**
>
> > **Note:**
> >
> > **注意**：如果您有程序集定义，可能必须引用生成的程序集定义。请向 asmdef 的引用添加 `"Unity.Services.CloudCode.GeneratedBindings"`。

请参阅[在 Unity Runtime 中运行模块](../run-modules/unity-runtime#use-editor-bindings)以了解如何使用生成的绑定。

#### 限制##limits

绑定生成操作具有以下限制：

* 它不区分必需参数和可选参数。
* 不支持元组作为参数或返回值。
* 为枚举成员定义显式值不受支持，并且在绑定生成后不会出现。

### 部署模块##deploy-modules

您可以使用 [Deployment（部署）窗口](https://docs.unity3d.com/Packages/com.unity.services.deployment@latest/index.html?subfolder=/manual/deployment_window.html)来部署模块。还可以在 Unity 编辑器中进入**运行**模式时自动部署模块。

要部署模块，请执行以下操作：

1. 在 Unity 编辑器中，打开 [**Deployment（部署）窗口**](#preview-the-deployment-window)。
2. 在 Project（项目）窗口中选择模块引用文件。
3. 在 Deployment（部署）窗口中，单击 **Deploy Selected（部署所选项）**。

> **Warning:**
>
> **重要**：默认情况下，部署过程基于您的解决方案的 `Release` 构建配置。为了减小大小，此配置应避免包含测试项目等额外内容。要了解有关构建配置的更多信息，请访问 [Rider](https://www.jetbrains.com/help/rider/Build_Configurations.html) 或 [Visual Studio](https://learn.microsoft.com/en-us/visualstudio/ide/understanding-build-configurations?view=vs-2022) 的文档。

请查看 [Deployment 包手册](https://docs.unity3d.com/Packages/com.unity.services.deployment@latest)以了解更多信息。

部署成功后，Project（项目）窗口中的模块引用文件旁边会显示一个绿色勾号标记。

您可以通过调用模块终端来验证部署是否成功。模板模块包含一个名为 `SayHello` 的默认终端。

请参阅[在 Unity Runtime 中运行模块](../run-modules/unity-runtime#calling-a-cloud-code-module-endpoint)以了解如何调用模块终端。
