Unity Editor

You can use the Unity Editor to create and deploy Cloud Code modules. The Cloud Code package contains the Cloud Code Authoring module, which allows you to use the Deployment package to interact with modules.

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

Prerequisites

To use Cloud Code in the Unity Editor, follow the steps below.

Link your Unity Gaming Services project with the Unity Editor. You can find your UGS project ID in the Unity Cloud Dashboard.

  1. In Unity Editor, select Edit > Project Settings > Services.

  2. Link your project.

    • If your project doesn't have a Unity project ID:

      1. Select Create a Unity Project ID > Organizations, then select an organization from the dropdown menu.
      2. Select Create project ID.
    • If you have an existing Unity project ID:

      1. Select Use an existing Unity project ID.
      2. Select an organization and a project from the dropdown menus.
      3. Select Link project ID.

Your Unity Project ID appears, and the project is now linked to Unity services.

You can also use the UnityEditor.CloudProjectSettings.projectId parameter to access your project ID in a Unity Editor script.

Install required packages

To create Cloud Code modules within the Editor, you must install the following packages:

  • Deployment
  • Cloud Code (2.5.0 or higher)

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

Install these packages, and add them to your list of available packages:

  1. Open the Unity Editor’s Package Manager window by selecting Window > Package Manager.
  2. From the Unity Editor’s Package Manager window, select + (add) > Add package by name….
  3. Enter com.unity.services.deployment.
  4. Select Add.
  5. Repeat these steps for com.unity.services.cloudcode.

Install .NET

To deploy Cloud Code modules in the editor, you first need to install .NET.

Follow the steps below to set your default .NET path in editor:

  1. In the Unity Editor, open the Preferences window.
    • On Windows, select Edit > Preferences.. > Cloud Code.
    • On macOS, select Unity > Settings.. > Cloud Code.
  2. In the .NET development environment section, modify your .NET path to the path where you installed it.
  3. Select Apply.

Preview the Deployment window

The Deployment window allows you to deploy Cloud Code modules to your remote environment. If you installed the Deployment package, you can access it from the Unity Editor.

  • In Unity Editor versions 2021.3+: Select Window > Deployment.
  • In Unity Editor versions 2022+: Select Services > Deployment.

Before you can use the Deployment window, you have to select the environment you want to deploy to.

  1. In the Unity Editor, open the Deployment window.
  2. In the Deployment window, select Deployment Settings.
  3. In the new Environments window, select an environment from the Editor Environment dropdown.

Note: The Deployment window also supports other Unity Gaming services. If your Cloud Code modules rely on other services, you can deploy changes at the same time.

Refer to the Deployment window for more information.

Author within Unity Editor

The installed Cloud Code package contains the Cloud Code Authoring module, which allows you to create and deploy Cloud Code modules directly from the Unity Editor.

To do this, create a module reference file in the editor and link it to your module project. Once configured, the Deployment window allows you to deploy your module to the remote environment.

Create a C# Module Reference file

To get started, create a Cloud Code C# Module Reference file. This file is a reference to a solution containing the C# module project you want to deploy.

  1. In the Unity Editor, right-click in the Project window, then select Create > Cloud Code C# Module Reference.
  2. Name the module reference as you would your module to avoid confusion.
  3. Press Enter.

Note: The module deployed has the same name as the main project in the solution.

The new module reference is now visible in the Project window and in the Deployment window. To access the module reference, open the Deployment window.

The C# Module Reference needs to be linked to a module. You can either link an existing solution or generate a new one from the Unity Editor.

Generate a new module

With a module reference file, you can generate a new module from the Deployment window. The generated module contains the required basic setup for you to start to develop your module.

  1. In the Unity Editor, select the module reference file in the Project window.
  2. In the Inspector window, select Generate Solution.

You can also generate a new module directly from the Deployment window.

  1. In the Unity Editor, open the Deployment window.
  2. Right-click on the module reference file and select Generate Solution.

This places the generated module in the root of your project directory. Cloud Code uses the reference file name to generate the default solution path. The solution file name is the solution path Cloud Code uses to generate the module template.

For example, if you call your reference file test_module.ccmr, your default solution path might be ../test_module, which creates a module under a solution file of test_module.sln.

If you want to use a different authoring method to create a new module, refer to Write modules. The module reference comes with a default solution path. You should change this path to point to your existing module solution.

  1. In the Unity Editor, select the module reference file in the Project window.
  2. In the Inspector window, modify the Solution Path field to point to your existing module solution.

Generate bindings

You can generate type-safe client code from the Unity Editor. Bindings generate from the module reference file, and you can use the bindings to call the module endpoints. A type-safe client guarantees the types used by the game-client and received by the module match, ensuring no serialization problems.

You can generate bindings from the following locations:

  • Generate from the Inspector window:

    1. In the Unity Editor, select the module reference file in the Project window.

    2. In the Inspector window, click Generate Bindings

  • Generate from the Deployment Window:

    1. In the Unity Editor, open the Deployment window.
    2. Right-click on the Cloud Code Module Reference, and select Generate Code Bindings.
  • Generate from the toolbar:

    1. Navigate to Services > CloudCode, and select Generate CloudCode Bindings.
    2. This generates bindings for all existing module references.
  • Generate from Project Settings:

    1. In the Unity Editor, navigate to Edit > Project Settings.
    2. Navigate to Services > Cloud Code, and select Generate All Module Bindings.
    3. This generates bindings for all existing module references.

Unity Editor generates the type-safe client code under the Assets/CloudCode/GeneratedModuleBindings directory.

Note: If you have an assembly definition, you might have to reference the generated assembly definition. Add "Unity.Services.CloudCode.GeneratedBindings" to your asmdef's references.

Refer to Run modules in Unity Runtime to learn how to use the generated bindings.

Limits

The bindings generation has the following limitations:

  • It does not differentiate between required parameters and optional parameters.
  • Tuples are not supported as parameters or the return value.

Deploy modules

You can use the Deployment window to deploy your modules. You can also automatically deploy modules when you enter the Play mode in the Unity Editor.

To deploy the module:

  1. In the Unity Editor, open the Deployment window.
  2. Select the module reference file in the Project window.
  3. In the Deployment window, click Deploy Selected.

Check the Deployment package manual for more information.

A successful deployment shows a green checkmark next to the module reference file in the Project window.

You can verify the deployment is successful by calling the module endpoints. The template module contains a default endpoint called SayHello.

Refer to Run modules in Unity Runtime to learn how to call the module endpoints.