# 使用の準備

> Follow this workflow to create a C# module in the Unity Editor and deploy it to the Cloud Code service.

このページでは、Unity エディターで C# モジュールを作成して Cloud Code サービスにデプロイするために必要なステップについて説明します。

> **Note:**
>
> **ノート:** モジュールの Unity エディターインテグレーションをサポートするのは Unity 2021.3 以上のみです。

ワークフローの例では、単純な Hello World C# モジュールが作成されます。Cloud Code モジュールの使用を準備するには、以下のステップに従います。

1. [Unity エディターの設定:](#set-up-the-unity-editor) Unity Gaming Services プロジェクト を Unity エディターにリンクし、必要なパッケージをインストールします。
2. [C# モジュールリファレンスファイルの作成:](#create-a-c-module-reference-file) エディターでモジュールリファレンスファイルを作成し、モジュールプロジェクトにリンクします。
3. [新しいモジュールの生成:](#generate-a-new-module) Deployment (デプロイ) ウィンドウで新しいモジュールを生成します。
4. [バインディングの生成:](#generate-bindings) ソリューションからクライアントコードを生成します。
5. [モジュールのデプロイ:](#deploy-the-module) モジュールを Cloud Code サービスにデプロイします。
6. [ゲームからのモジュール関数の呼び出し: ](#call-a-module-function-from-your-game)ゲームクライアントからモジュールエンドポイントを呼び出します。

> **Note:**
>
> **ノート:** モジュールを作成してデプロイする他のオーサリング方法については、[モジュールの記述](./how-to-guides/write-modules.md) を参照してください。

## ビデオウォークスルー##video-walkthrough

以下のビデオで、Unity エディターで C# モジュールを作成して Cloud Code サービスにデプロイするステップのウォークスルーを確認します。


[Video content](https://youtu.be/l_iD06qOu6Q)

## Unity エディターの設定##set-up-the-unity-editor

エディターで Cloud Code モジュールを作成するには、必要なパッケージをインストールし、Unity Gaming Services プロジェクトを Unity エディターにリンクする必要があります。

### プロジェクトのリンク##link-project

[Unity Gaming Services プロジェクト](/cloud/projects.md) を Unity エディターにリンクします。UGS プロジェクト ID は [Unity Dashboard](https://cloud.unity.com) にあります。

新しい Unity プロジェクトを作成する場合、プロジェクトの作成プロセスで、Unity Gaming Services プロジェクトを Unity エディターにリンクできます。

既存の Unity プロジェクトを使用している場合は、Services (サービス) ウィンドウで Unity Gaming Services プロジェクトを Unity エディターにリンクできます。

1. Unity エディターで、**Edit** (編集) > **Project Settings** (プロジェクト設定) > **Services** (サービス) の順に選択します。

2. プロジェクトをリンクします。
   プロジェクトに Unity プロジェクト ID がない場合:

   1. **Create a Unity Project ID** (Unity プロジェクト ID の作成) > **Organizations** (組織) の順に選択し、ドロップダウンから組織を選択します。
   2. **Create project ID** (プロジェクト ID を作成) を選択します。

   既存の Unity プロジェクト ID がある場合:

   1. **Use an existing Unity project ID** (既存の Unity プロジェクト ID を使用) を選択します。
   2. ドロップダウンから組織とプロジェクトを選択します。
   3. **Link project ID** (プロジェクト ID をリンク) を選択します。

Unity プロジェクト ID が表示され、プロジェクトが Unity サービスにリンクされました。

### 必要なパッケージをインストールする##install-required-packages

エディター内で Cloud Code モジュールを作成するには、以下のパッケージをインストールする必要があります。

* Deployment
* Cloud Code (2.6.1 以降)

> **Note:**
>
> **ノート:** [Unity - マニュアル:Package Manager ウィンドウ](https://docs.unity3d.com/Manual/upm-ui.html) を参照し、Unity Package Manager インターフェースについて理解してください。

Unity エディターの Package Manager (パッケージマネージャー) ウィンドウで、これらのパッケージをインストールし、使用可能なパッケージのリストに追加できます。

1. Unity エディターの Package Manager (パッケージマネージャー) ウィンドウを開くには、**Window** (ウィンドウ) > **Package Manager** (パッケージマネージャー) を選択します。
2. **+** (追加) > **Add package by name…** (パッケージを名前で追加) を選択します。
3. `com.unity.services.deployment` を入力します。
4. **Add** (追加) を選択します。
5. これらのステップを `com.unity.services.cloudcode` について繰り返します。

### .NET のインストールと設定##install-and-set-up-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 (デプロイ) ウィンドウの設定##set-up-the-deployment-window

Deployment (デプロイ) ウィンドウにより、Cloud Code モジュールをリモート環境にデプロイできます。

Deployment パッケージをインストールした場合は、Unity エディターからそれにアクセスできます。

* Unity エディターのバージョン 2021.3+ では、**Window** (ウィンドウ) > **Deployment** (デプロイ) を選択します。
* Unity エディターのバージョン 2022+ では、**Services** (サービス) > **Deployment** (デプロイ) を選択します。

Deployment (デプロイ) ウィンドウを使用する前に、デプロイ先の環境を選択する必要があります。

1. Unity エディターで、[**Deployment (デプロイ) ウィンドウ**](#set-up-the-deployment-window) を開きます。
2. Deployment (デプロイ) ウィンドウで **Deployment Settings** (デプロイ設定) を選択します。
3. 新しい Environments (環境) ウィンドウで、**Editor Environment** (エディター環境) ドロップダウンから環境を選択します。

## C# モジュールリファレンスファイルの作成##create-a-c-module-reference-file

Unity エディター内で Cloud Code モジュールを作成するには、Cloud Code C# モジュールリファレンスファイルを作成する必要があります。このファイルは、デプロイしようとする C# モジュールプロジェクトを含むソリューションのリファレンスです。

1. Unity エディターで、Project ウィンドウを右クリックし、**Create** (作成) > **Cloud Code C# Module Reference** (Cloud Code C# モジュールリファレンス) を選択します。
2. モジュールリファレンスファイルに `HelloWorld` という名前を付けます。
3. **Enter** を押します。


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

新しいモジュールリファレンスが Project ウィンドウと Deployment (デプロイ) ウィンドウに表示されます。

## 新しいモジュールの生成##generate-a-new-module

Cloud Code モジュールは、ゲームクライアントが呼び出すことのできるエンドポイントを公開する単純な .NET プロジェクトです。Unity エディターで、モジュールの生成により、変更できるモジュールテンプレートを含むソリューションが作成されます。Cloud Code モジュールがどのように構造化されるかについては、[モジュール構造](./how-to-guides/module-structure.md) を参照してください。

モジュールリファレンスファイルを使用して、新しいモジュールを Deployment (デプロイ) ウィンドウで生成できます。生成されるモジュールには、モジュールの開発を開始できる必須の基本設定が含まれます。

1. Unity エディターの Project ウィンドウで、モジュールリファレンスファイルを選択します。
2. [Inspector](https://docs.unity3d.com/Manual/UsingTheInspector.html) ウィンドウで、**Generate Solution** (ソリューションの生成) をクリックします。

新しいモジュールを Deployment (デプロイ) ウィンドウで直接生成することもできます。

1. Unity エディターで、[**Deployment (デプロイ) ウィンドウ**](#set-up-the-deployment-window) を開きます。
2. モジュールリファレンスファイルを右クリックし、**Generate Solution** (ソリューションの生成) を選択します。


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

生成されたモジュールは、Unity プロジェクトのルートにある `HelloWorld` フォルダーにあります。このモジュールは、変更したり拡張したりできる .NET プロジェクトです。

> **Note:**
>
> **ノート**: Cloud Code モジュールは .NET プロジェクトであるため、[NuGet パッケージマネージャー](https://docs.microsoft.com/en-us/nuget/what-is-nuget) を使用して依存関係を管理します。Cloud Code モジュールでは、呼び出せるエンドポイントを作成できるようにするために Cloud Code Authoring パッケージが必要です。これは、プロジェクトにインストールできる NuGet パッケージです。生成されたモジュールにすでに入っています。

## バインディングの生成##generate-bindings

新しいモジュールを生成した後で、バインディングを生成できます。バインディングは、ゲームクライアントからモジュールエンドポイントを呼び出すために使用できるタイプセーフクライアントコードです。

1. Unity エディターの Project ウィンドウで、モジュールリファレンスファイルを選択します。
2. [Inspector](https://docs.unity3d.com/Manual/UsingTheInspector.html) (インスペクター) ウィンドウで、**Generate Bindings** (バインディングの生成) を選択します。

## モジュールのデプロイ##deploy-the-module

モジュールエンドポイントをゲームクライアントからアクセス可能にするには、Cloud Code サービスにモジュールをデプロイする必要があります。[Deployment (デプロイ)](https://docs.unity3d.com/Packages/com.unity.services.deployment@latest/index.html?subfolder=/manual/deployment_window.html) ウィンドウを使用してモジュールをデプロイできます。

モジュールをデプロイするには、以下を行います。

1. Unity エディターで、[**Deployment (デプロイ) ウィンドウ**](#set-up-the-deployment-window) を開きます。
2. Project (プロジェクト) ウィンドウで、モジュールリファレンスファイルを選択します。
3. Deployment (デプロイ) ウィンドウで **Deploy Selected** (選択したアイテムのデプロイ) を選択します。

詳細については、[Deployment パッケージのマニュアル](https://docs.unity3d.com/Packages/com.unity.services.deployment@latest) を確認してください。

デプロイが成功すると、Project (プロジェクト) ウィンドウでモジュールリファレンスファイルの横に緑色のチェックマークが表示されます。

## ゲームからのモジュール関数の呼び出し##call-a-module-function-from-your-game

デプロイが成功したことを確認するために、ゲームクライアントからモジュールエンドポイントを呼び出します。生成されたモジュールには、`SayHello` というデフォルトのエンドポイントが含まれます。

### SDK の設定##sdk-setup

ゲームからモジュール関数を呼び出すには、まずゲームクライアントに Cloud Code SDK を設定する必要があります。

1. [Unity Dashboard](https://cloud.unity.com) の Cloud Code ページでこのサービスが有効になっていることを確認します。
2. Unity Package Manager で Cloud Code と Authentication SDK の両方をインストールしたことを確認します。
3. Unity エディターで新しい C# Monobehaviour スクリプトを作成します。詳細については、Unity マニュアルの [スクリプトの作成と使用](https://docs.unity3d.com/Manual/CreatingAndUsingScripts.html) を参照してください。

> **Note:**
>
> **ノート**: プレイヤーが Cloud Code サービスにアクセスするには有効なプレイヤー ID とアクセストークンが必要です。どの Cloud Code API を使用する場合でも前もってプレイヤーを Authentication SDK で認証する必要があります。

### モジュール関数の呼び出し##call-the-module-function

以下は、ゲームクライアント内のモジュール `HelloWorld` からモジュール関数`SayHello` を呼び出す方法を示す例です。

*C#*

```cs
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);
        }
    }
}
```

> **Important:**
>
> **重要**: モジュールが過去 15 分間にトラフィックを受信しなかった場合、コールドスタートの待ち時間が発生する可能性があります。その後のモジュールへの呼び出しは、より高速になります。

## 次のステップ##next-steps

最初のモジュールのデプロイ後に、次のステップについて学習します。

| **トピック**                                                                  | **説明**                                 |
| ------------------------------------------------------------------------- | -------------------------------------- |
| [モジュール構造](./how-to-guides/module-structure.md)                            | モジュール構造をよく理解します。                       |
| [他の Unity サービスとのインテグレーション](./how-to-guides/unity-services-integration.md) | モジュールを他の Unity Gaming Services と統合します。 |
| [外部サービスとのインテグレーション](./how-to-guides/external-services-integration.md)     | モジュールを外部サービスと統合します。                    |
| [単体テストの作成](./how-to-guides/unit-testing.md)                               | モジュールの単体テストを記述します。                     |
