手动工作流程
Create a C# module manually with control over the module deployment process.
阅读时间9 分钟最后更新于 1 个月前
本节介绍在项目中创建 C# 模块所需的步骤。
要开始使用 Cloud Code 模块,必须按照以下步骤操作:
- 创建 .NET 项目:Cloud Code 模块是简单的 .NET 项目,其中公开了游戏客户端可以调用的终端。
- 导入 Cloud Code Authoring 包:安装 Cloud Code Authoring 包来创建可调用的终端。
- 在项目中创建模块终端:定义可从游戏客户端调用的游戏逻辑。
- 打包代码:为项目生成程序集,并将它们打包到存档中。
- 部署项目:将存档部署到 Cloud Code 服务。
- 调用模块终端:从游戏客户端调用模块终端。
创建 .NET 项目
Cloud Code 模块是简单的 .NET 项目,其中公开了游戏客户端可以调用的终端。首先,请在所选的集成开发环境 (IDE) 中创建新的 .NET 项目。要详细了解 Cloud Code 模块的结构,请参阅模块结构。 以下几节将介绍如何在 JetBrains Rider 和 Microsoft Visual Studio 集成开发环境中创建项目。JetBrains Rider
按照以下步骤在 JetBrains Rider 中创建新项目:- 选择 File(文件)> New(新建)。
- 选择类库,即 .NET Core 或 .NET Framework。
- 为模块命名。
- 选择 Create(创建)。
Microsoft Visual Studio
按照以下步骤在 Microsoft Visual Studio 中创建新项目:- 选择 File(文件)> New Solution(新建解决方案)。
- 选择一个 .Net 类库。
- 选择 Next(下一步)。
- 为模块命名。
- 选择 Create(创建)。
导入 Cloud Code Authoring 包
Cloud Code 模块是 .NET 项目,因此它们使用 NuGet Package Manager 来管理依赖项。 Cloud Code 模块需要 Cloud Code Authoring 包,以便能够创建可调用的终端。这是一个可以安装到项目中的 NuGet 包。 以下几节将演示如何在以下集成开发环境中导入包。JetBrains Rider
按照以下步骤使用 JetBrains Rider 安装 Cloud Code Authoring 包:- 选择 Tools(工具)> NuGet > Show NuGet Packages(显示 NuGet 包)。
- 搜索 。
Com.Unity.Services.CloudCode.Core - 将最新版本安装到您的项目中。
Microsoft Visual Studio
按照以下步骤使用 Microsoft Visual Studio 安装 Cloud Code Authoring 包:- 右键单击项目 > Manage NuGet Packages(管理 NuGet 包)。
- 搜索 。
Com.Unity.Services.CloudCode.Core - 选择 Add Package(添加包)。
创建模块终端
要在 C# 模块中创建终端,您需要创建一个可在外部调用的函数,使用CloudCodeFunctionSayHellonameusing Unity.Services.CloudCode.Core;namespace ExampleModule;public class MyModule{ [CloudCodeFunction("SayHello")] public string Hello(string name) { return $"Hello, {name}!"; }}
打包代码
在部署模块之前,需要将代码打包到存档中。 此存档必须包含 Cloud Code 服务运行模块时所需的程序集。 要生成这些程序集,可以发布项目。 您需要为linux-x64ReadyToRunJetBrains Rider
要使用 JetBrains Rider 集成开发环境生成程序集,请按照以下步骤操作:- 选择 Run(运行)> Edit Configurations(编辑配置)。
- 选择 +。
- 选择 Publish to folder(发布到文件夹)。
- 为配置命名。
- 将 Target location(目标位置) 设置为要存储构建输出的位置。
- 选择 Release | Any CPU(发布 | 任何 CPU) 配置。
- 选择 linux-x64 目标运行时。
- (可选)启用 Enable ReadyToRun compilation(启用 ReadyToRun 编译)。
- 选择 Apply(应用)。
Microsoft Visual Studio
要使用 Microsoft Visual Studio 集成开发环境生成程序集,请按照以下步骤操作:- 右键单击解决方案,然后选择 Publish(发布)。
- 按照屏幕上的步骤将文件存储在本地。
- 选择 Show All Settings(显示所有设置)。
- 将目标运行时设置为 linux-x64。
- 选择 Save(保存)。
- 选择 Publish(发布)。
压缩程序集
默认情况下,发布过程会按照根项目目录下的bin/Release/net6.0/linux-x64/publish
在 Unix 系统上,运行以下命令:
zip ExampleModule.ccm *zip -r ExampleModule.ccm path/to/your/project/bin/Release/net6.0/linux-x64/publish/*部署模块项目
要使游戏客户端能够访问您的模块终端,您需要将存档部署到 Cloud Code 服务。 请参阅编写模块以了解有关模块部署的更多信息。 要使用 UGS CLI 进行部署,必须将存档文件扩展名更改为 .ccm。配置 UGS CLI
按照以下步骤操作以开始使用 UGS CLI:- 安装 UGS CLI。
- 使用以下命令配置您的 Project ID 和环境:
ugs config set project-id <your-project-id>
ugs config set environment-name <your-environment-name> - 为服务帐户配置 Cloud Code 和环境管理所需的角色。请参阅接受身份验证。
部署该模块
要部署模块,请运行以下命令:ugs deploy <path-to-ccm-file>从游戏调用模块函数
部署模块后,可以从游戏客户端调用模块函数。先决条件
要在 Unity 编辑器中使用 Cloud Code,您需要先安装 Cloud Code SDK,并将 Unity Gaming Services(Unity 游戏服务)项目关联到 Unity 编辑器。关联项目
您可以在 Unity Cloud Dashboard 中找到您的 UGS Project ID。按照以下步骤将 Unity Gaming Services(Unity 游戏服务)项目与 Unity 编辑器关联。- 在 Unity 编辑器中,选择 Edit(编辑)> Project Settings(项目设置)> Services(服务)。
-
关联您的项目。
如果项目没有 Unity Project ID:- 选择 Create a Unity Project ID(创建 Unity Project ID)> Organizations(组织),然后从下拉选单中选择一个组织。
- 选择 Create project ID(创建 Project ID)。
如果已有 Unity Project ID:- 选择 Use an existing Unity project ID(使用现有 Unity Project ID)。
- 从下拉选单中选择组织和项目。
- 选择 Link project ID(关联 Project ID)。
UnityEditor.CloudProjectSettings.projectIdSDK 安装
要安装适用于 Unity 编辑器的最新 Cloud Code 包,请执行以下操作:- 在 Unity 编辑器中,打开 Window(窗口)> Package Manager(包管理器)。
- 在 Package Manager(包管理器)中,选择 Unity Registry(Unity 注册表) 列表视图。
- 搜索 或在列表中找到 Cloud Code 包。
com.unity.services.cloudcode - 选择包,然后单击 Install(安装)。
SDK 设置
开始使用 Cloud Code SDK:- 确保在 Unity Cloud Dashboard 中通过 Cloud Code 页面启用该服务。
- 确保 Cloud Code SDK 和 Authentication SDK 均已安装。
- 在 Unity 编辑器中选择 Edit(编辑)> Project Settings(项目设置)> Services(服务) 登录到您的云项目。
- 在 Unity 编辑器中创建新的 C# Monobehaviour 脚本。请参阅 Unity 手册中的创建和使用脚本。
- 在脚本中,使用 await 初始化 Core SDK。
UnityServices.InitializeAsync() - 在脚本中,初始化 Authentication SDK。
###C#
await AuthenticationService.Instance.SignInAnonymouslyAsync();
调用模块函数
要从游戏客户端调用模块函数,必须对调用进行身份验证,在调用任何服务的功能之前初始化 Services Core SDK,然后调用模块函数。 如需更多有关如何使用游戏客户端来调用模块的信息,请参阅从 Unity Runtime 运行模块。 按照以下步骤调用模块函数:- 初始化 Services Core SDK。在调用 Cloud Code 之前,通过导入 Services Core 命名空间 () 在游戏代码中初始化 Unity Services,然后调用
Unity.Services.Core方法。InitializeAsync - 对调用进行身份验证。每次调用 Cloud Code 都必须经过身份验证,并且玩家必须拥有有效的玩家 ID 和访问令牌才能访问 Cloud Code 服务。请参阅身份验证。建议通过调用 方法开始进行匿名身份验证。
SignInAnonymouslyAsync - 调用模块函数。使用 Cloud Code SDK 通过 方法调用模块函数。
CallEndpointModuleAsync
集成示例
以下示例说明了如何从游戏客户端中的模块ExampleModuleSayHellousing System.Collections.Generic;using Unity.Services.Authentication;using Unity.Services.CloudCode;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 string result = await CloudCodeService.Instance.CallModuleEndpointAsync("ExampleModule", "SayHello", new Dictionary<string, object> {{"name", "World"}}); Debug.Log(result); } catch (CloudCodeException exception) { Debug.LogException(exception); } }}