与 Unity 编辑器集成
Author and modify Cloud Code scripts directly within the Unity Editor using the Cloud Code Authoring module.
阅读时间9 分钟最后更新于 1 个月前
Cloud Code Authoring 模块(随 Cloud Code 包一起安装)允许您选择直接在 Unity 编辑器中创作和修改脚本。然后,您可以使用 Deployment 包将脚本从 Unity 编辑器上传到 Unity Cloud Dashboard。
Unity 编辑器中存在的脚本允许用户将他们的源代码管理系统视为单一数据源(而不是使用云中的版本),从而简化回滚、两等分和其他常见操作。例如,Cloud Code Authoring 模块有助于执行诸如使客户端 C# 脚本与 Cloud Code 脚本保持同步等任务。
先决条件
要在 Unity 编辑器中使用 Cloud Code,必须先安装 Cloud Code SDK,并将 Unity Gaming Services(Unity 游戏服务)项目关联到 Unity 编辑器。关联项目
将 Unity Gaming Services(Unity 游戏服务)项目与 Unity 编辑器关联。您可以在 Unity Cloud Dashboard 中找到您的 UGS Project ID。- 在 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)。
-
如果项目没有 Unity Project ID:
UnityEditor.CloudProjectSettings.projectId安装所需的包
要在编辑器中创建 Cloud Code 脚本,必须安装以下包:- Deployment
- Cloud Code(2.1.1 或更高版本)
安装这些包并将它们添加到可用包列表中:
- 在 Unity 编辑器的 Package Manager(包管理器)窗口中,选择 +(添加)> Add package by name...(按名称添加包...)。
- 输入 。
com.unity.services.deployment - 选择 Add(添加)。
- 对 重复以上步骤。
com.unity.services.cloudcode
在 Unity 编辑器中创作
借助 Cloud Code Authoring 模块,您可以直接在 Unity 编辑器中创建、编辑和部署 Cloud Code 脚本。创建脚本
按照以下步骤使用 Cloud Code Authoring 模块创建 Cloud Code 脚本:- 在 Unity 编辑器的 Project(项目)窗口中右键单击,然后选择 Create(创建)> Services(服务)> Cloud Code Js Script(Cloud Code Js 脚本)。
- 像命名 C# 脚本一样命名该脚本。上传到服务时,Cloud Code 脚本会使用其文件名作为标识符。
- 按 Enter(输入)。
现在,新脚本会显示在 Project(项目)窗口和 Deployment(部署)窗口中;可通过选择 Window(窗口)> Deployment(部署) 来访问 Deployment(部署)窗口。
编辑脚本
有两种方法可以编辑现有的 Cloud Code Authoring 脚本:- 在 Project(项目)选项卡中,双击现有脚本。
- 在 Deployment(部署)窗口中,找到现有脚本,然后从右键单击菜单中选择 Open(打开)。
- 在 Unity 编辑器中,选择 Edit(编辑)> Preferences...(偏好设置...)> Cloud Code。
- 在 Javascript Editor(Javascript 编辑器)部分中,选择所需的 JS 编辑器的应用程序路径。
- 选择 Apply(应用)。
- :资源的文件路径
$(File) - :项目目录
$(ProjectPath) - :解决方案路径
$(SolutionPath) - :编辑器可执行文件路径(在 Unity 编辑器中选择 Edit(编辑)> Preferences...(偏好设置...)> External Tools(外部工具))
$(EditorExePath)
-
JetBrains Rider(在 Windows 上):
- 应用程序:
cmd.exe - 参数:
/C "$(EditorExePath) $(ProjectPath) $(File)"
- 应用程序:
-
Microsoft Visual Studio Code:
- 应用程序:
Code.exe - 参数:
$(ProjectPath) $(File)"
- 应用程序:
部署脚本
您可以通过 Deployment(部署)窗口部署脚本。请查看 Deployment 包手册以了解更多信息。修改脚本参数
您可以在 Unity 编辑器中访问和修改 Cloud Code 脚本参数。在编辑器的 Inspector(检视面板)窗口中访问参数
您可以通过在 Unity 编辑器的 Project(项目)窗口中选择 Cloud Code 脚本来修改脚本的参数。脚本的参数会在编辑器的 Inspector(检视面板)窗口中打开。
可能的参数类型包括:
- String(字符串)
- Boolean(布尔值)
- Numeric(数值)
- JSON
- Any(任意)
在脚本正文中声明参数
为了获得更顺畅的 Cloud Code 脚本使用体验,您可以直接在脚本中声明参数,方法是导出params
例如:
JavaScript
或者,如果要指定某个参数为必需参数,可以指定一个同时包含module.exports.params = { "echo" : "Boolean" }
typerequired默认情况下,参数不是必需参数。 两种格式可以根据需要组合使用: JavaScriptmodule.exports = async ({ params, context, logger }) => { return { "value": params["aParam"] };};module.exports.params = { "aParam" : { "type": "String", "required": true } }
如果使用脚本内参数,这些参数会覆盖以前定义的 Inspector(检视面板)参数。 脚本内参数提供了一种比声明参数更简单的替代方法,但如果您尝试在不使用 Deployment 包的情况下更新脚本内参数,Unity Cloud Dashboard 目前不会解析这些参数。module.exports = async ({ params, context, logger }) => { var value = params["echo"] ? params["aParam"] : "default"; return { "value": value };};module.exports.params = { "echo" : "Boolean", "aParam" : { "type": "String", "required": true } }
JS 捆绑包
JS 脚本可以导入带有
importrequirebundling
JavaScript
以下示例演示了在示例项目中使用捆绑的情况。 lib.jsmodule.exports.bundling = true;
scriptToBundle.jsmodule.exports.helloWorld = "Hello world!";
const lib = require("./lib");module.exports = async ({ params, context, logger }) => { return { "value": lib.helloWorld };};module.exports.bundling = true;
Deployment(部署)窗口
Deployment(部署)窗口是 Deployment 包的一项核心功能。此窗口旨在让所有服务使用一个统一的界面来满足部署需求,并可以将云资源上传到其各自的云服务。 请查看 Deployment 包手册以了解更多信息。Unity 编辑器中的 Cloud Code JavaScript 项目
Unity 编辑器中的 Cloud Code JavaScript 项目位于 Unity 项目的根目录下,具有以下结构: ├──Assets│ └──
CloudCode│ └──
cloud_script.js├──
node_modules├──
package.json└──
package-lock.jsonpackage.jsonpackage.jsonpackage-lock.jsonNodeJS
为了支持更多开发者工具,开发者必须安装 NodeJS。借助 NodeJS 可以支持自动补全功能和开发环境的其他预期功能。自动补全
JS 的大部分自动补全功能由 typings 项目处理。您可以使用.d.ts.d.tsnode_modulespackage.jsonnode_modules外部工具
您可以通过从 JS 项目中运行相应的npm install ...ESLint
-
运行 。此命令会将 ESLint 添加到项目依赖项。
npm i -D eslint -
在项目根目录下创建一个包含以下内容的 文件: JSON
.eslint.json{ "env": { "commonjs": true, "es2021": true }, "extends": "eslint:recommended", "parserOptions": { "ecmaVersion": 13 }, "rules": { }} - 配置集成开发环境以运行 ESLint。对于 Visual Studio Code,这是自动进行的,但可能还需要其他设置,具体取决于集成开发环境。
- ESLint 现在应该已经配置完成并可以正常工作。
eslint:recommendedif (something == -0)Jest
Jest 是一种用于 JavaScript 测试的框架。以下示例说明了如何为 Cloud Code 脚本创建单元测试。-
运行 。此命令将安装 Jest 包。
npm install --save-dev jest -
配置 Jest 以使用 脚本运行。
.es10 -
向 添加以下代码片段: JSON
package.json"jest": { "moduleFileExtensions": ["es10", "js"], "testMatch": ["**/*.test.es10"]}
moduleFileExtensionsjses10testMatch.test.es10单元测试示例
以下 JS 单元测试示例返回一个对象,然后验证测试脚本中的结果是否相同。通过模拟功能可以提供更高级的选项。要测试的脚本:
Cloud Code 需要以下签名: JavaScriptmodule.exports = async ({ params, context, logger }) => { return {value: "1"};};
测试脚本:
JavaScriptconst test = require("./jest_01.es10")it("test",async () =>{ expect(await test({})).toMatchObject({value:"1"});});
运行您的测试
使用以下命令在命令行中运行测试:npm run test