开始使用

本页介绍了在 Unity 编辑器中创建 C# 模块并将其部署到云代码服务所需的步骤。

Note: Only Unity 2021.3 and above support Unity Editor integration for modules.

工作流程中的示例创建了一个简单的 Hello World C# 模块。要开始使用云代码模块,请按照以下步骤操作

  1. 设置 Unity 编辑器: 将您的 Unity 游戏服务项目与 Unity 编辑器链接,并安装所需的软件包。
  2. 创建 C# 模块引用文件: 在编辑器中创建一个模块引用文件,并将其链接到您的模块项目。
  3. 生成新模块: 从部署窗口生成新模块。
  4. 生成绑定: 从解决方案生成客户端代码。
  5. 部署模块: 将模块部署到云代码服务。
  6. 从您的游戏中调用模块函数: 从您的游戏客户端调用模块端点。

Note: For alternative authoring methods to create and deploy modules, refer to Write modules.

视频演练

观看下面的视频,了解在 Unity 编辑器中创建 C# 模块并将其部署到云代码服务的步骤演练。

设置 Unity 编辑器

要在编辑器中创建云代码模块,您需要安装所需的软件包,并将您的 Unity 游戏服务项目与 Unity 编辑器链接。

将您的 Unity 游戏服务项目 与 Unity 编辑器链接。您可以在 Unity 云面板 中找到您的 UGS 项目 ID。

如果您创建新的 Unity 项目,则可以在项目创建过程中将您的 Unity 游戏服务项目与 Unity 编辑器链接。

如果您正在使用现有的 Unity 项目,则可以从“服务”窗口将您的 Unity 游戏服务项目与 Unity 编辑器链接。

  1. 在 Unity 编辑器中,选择 编辑 > 项目设置 > 服务

  2. 链接您的项目。
    如果您的项目没有 Unity 项目 ID

    1. 选择 创建 Unity 项目 ID > 组织,然后从下拉列表中选择一个组织。
    2. 选择 创建项目 ID


    如果您有现有的 Unity 项目 ID

    1. 选择 使用现有的 Unity 项目 ID
    2. 从下拉列表中选择一个组织和一个项目。
    3. 选择 链接项目 ID

您的 Unity 项目 ID 将出现,并且该项目现在已链接到 Unity 服务。

安装所需的软件包

要在编辑器中创建云代码模块,您需要安装以下软件包

  • 部署
  • 云代码(2.6.1 或更高版本)

Note: Check Unity - Manual: Package Manager window to familiarize yourself with the Unity Package Manager interface.

您可以从 Unity 编辑器“包管理器”窗口安装这些软件包并将其添加到可用软件包列表中

  1. 选择 窗口 > 包管理器 以打开 Unity 编辑器的“包管理器”窗口。
  2. 选择 +(添加) > 按名称添加包…
  3. 输入 com.unity.services.deployment
  4. 选择 添加
  5. com.unity.services.cloudcode 重复这些步骤。

安装和设置 .NET

要在编辑器中部署云代码模块,您需要安装 .NET

要在编辑器中设置默认的 .NET 路径,请按照以下步骤操作

  1. 在 Unity 编辑器中,打开“偏好设置”窗口。
    • 在 Windows 上,选择 编辑 > 偏好设置.. > 云代码
    • 在 macOS 上,选择 Unity > 设置.. > 云代码
  2. .NET 开发环境 部分,将 .NET 路径 修改为您安装的路径。
  3. 选择 应用

设置“部署”窗口

“部署”窗口允许您将云代码模块部署到您的远程环境。

如果您安装了部署软件包,则可以从 Unity 编辑器访问它。

  • 在 Unity 编辑器 2021.3+ 版本中,选择 窗口 > 部署
  • 在 Unity 编辑器 2022+ 版本中,选择 服务 > 部署

在使用“部署”窗口之前,您需要选择要部署到的环境

  1. 在 Unity 编辑器中,打开 “部署”窗口
  2. 在“部署”窗口中,选择 部署设置
  3. 在新的“环境”窗口中,从 编辑器环境 下拉列表中选择一个环境。

创建 C# 模块引用文件

要在 Unity 编辑器中创建云代码模块,您需要创建一个云代码 C# 模块引用文件。此文件是对包含您要部署的 C# 模块项目的解决方案的引用。

  1. 在 Unity 编辑器中,右键单击“项目”窗口,然后选择 创建 > 云代码 C# 模块引用
  2. 将模块引用文件命名为 HelloWorld
  3. Enter 键

新的模块引用现在在“项目”窗口和“部署”窗口中可见。

生成新模块

云代码模块是一个简单的 .NET 项目,它公开了游戏客户端可以调用的端点。在 Unity 编辑器中,生成模块会创建一个包含您可以修改的模块模板的解决方案。要详细了解云代码模块的结构,请参阅 模块结构

使用模块引用文件,您可以从“部署”窗口生成新模块。生成的模块包含您可以开始开发模块所需的基本设置。

  1. 在 Unity 编辑器中,选择“项目”窗口中的模块引用文件。
  2. 检视器 窗口中,单击 生成解决方案

您也可以直接从“部署”窗口生成新模块。

  1. 在 Unity 编辑器中,打开 “部署”窗口
  2. 右键单击模块引用文件,然后选择 生成解决方案

您可以在 Unity 项目的根目录下的 HelloWorld 文件夹中找到生成的模块。该模块是一个 .NET 项目,您可以对其进行修改和扩展。

Note: Cloud Code modules are .NET projects, so they use the NuGet package manager to manage dependencies. Cloud Code modules require the Cloud Code Authoring package to enable you to create endpoints you can call out to. This is a NuGet package that you can install into your project, and it's already included in the generated module.

生成绑定

生成新模块后,您可以生成绑定。绑定是类型安全的客户端代码,您可以使用它从游戏客户端调用模块端点。

  1. 在 Unity 编辑器中,选择“项目”窗口中的模块引用文件。
  2. 检视器 窗口中,选择 生成绑定

部署模块

要使游戏客户端能够访问模块端点,您需要将模块部署到 Cloud Code 服务。您可以使用部署窗口来部署模块。

部署模块

  1. 在 Unity 编辑器中,打开 “部署”窗口
  2. 在“项目”窗口中选择模块引用文件。
  3. 在“部署”窗口中,单击“**部署所选内容**”。

有关更多信息,请查看部署包手册

成功部署后,“项目”窗口中的模块引用文件旁边会显示一个绿色复选标记。

从游戏中调用模块函数

要验证部署是否成功,您可以从游戏客户端调用模块端点。生成的模块包含一个名为 SayHello 的默认端点。

SDK 设置

要从游戏中调用模块函数,您首先需要在游戏客户端中设置 Cloud Code SDK。

  1. 确保通过Unity 云仪表板中的 Cloud Code 页面启用该服务。
  2. 确保已从 Unity 包管理器安装了 Cloud Code 和身份验证 SDK。
  3. 在 Unity 编辑器中创建一个新的 C# Monobehaviour 脚本。有关更多信息,请参阅 Unity 手册中的创建和使用脚本

Note: Players must have a valid player ID and access token to access the Cloud Code services. You need to authenticate players with the Authentication SDK before you use any of the Cloud Code APIs.

调用模块函数

以下示例展示了如何在游戏客户端中调用 HelloWorld 模块中的模块函数 SayHello

C#

using Unity.Services.Authentication;
using Unity.Services.CloudCode;
using Unity.Services.CloudCode.GeneratedBindings;
using Unity.Services.Core;
using UnityEngine;

public class TestModule : MonoBehaviour
{
    private async void Start()
    {
        // Initialize the Unity Services Core SDK
        await UnityServices.InitializeAsync();

        // Authenticate by logging into an anonymous account
        await AuthenticationService.Instance.SignInAnonymouslyAsync();

        try
        {
            // Call the function within the module and provide the parameters we defined in there
            var module = new HelloWorldBindings(CloudCodeService.Instance);
            var result = await module.SayHello("World");

            Debug.Log(result);
        }
        catch (CloudCodeException exception)
        {
            Debug.LogException(exception);
        }
    }
}

重要提示:如果模块在过去 15 分钟内没有收到任何流量,则您可能会遇到冷启动延迟。任何后续调用该模块的速度都会更快。

后续步骤

了解部署第一个模块后的后续步骤。

主题说明
模块结构熟悉模块结构。
与其他 Unity 服务集成将模块与其他 Unity Gaming Services 集成。
与外部服务集成将模块与外部服务集成。
编写单元测试为您的模块编写单元测试。