使用の準備
このセクションでは、プロジェクトで C# モジュールを作成するために必要なすべてのステップについて説明します。
Hello World のデプロイ
単純な Hello World C# モジュールを作成して、Cloud Code の使用を準備します。
典型的なワークフロー
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 IDE でプロジェクトを作成する方法を示します。
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 パッケージマネージャー を使用して依存関係を管理します。Cloud Code モジュールでは、呼び出せるエンドポイントを作成できるようにするために Cloud Code Authoring パッケージが必要です。これは、プロジェクトにインストールできる NuGet パッケージです。
以下のセクションは、以下の IDE でパッケージをインポートする方法を示します。
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# モジュール内にエンドポイントを作成するには、外部呼び出し可能な関数を作成し、CloudCodeFunction
属性を設定して公開名を付けます。関数名は異なっていても構わず、これによりゲームクライアントがすでに呼び出している関数を中断することなく後でコードをリファクタリングできます。
モジュール関数の簡単な例を以下に示します。
using Unity.Services.CloudCode.Core;
namespace ExampleModule;
public class MyModule
{
[CloudCodeFunction("SayHello")]
public string Hello(string name)
{
return $"Hello, {name}!";
}
}
この例は、name
という文字列パラメーターを受け取って文字列を返す SayHello
というモジュールエンドポイントを作成します。
コードのパッケージ化
モジュールをデプロイする前に、コードをアーカイブにパッケージ化する必要があります。このアーカイブには、Cloud Code サービスがモジュールを実行するために必要とするアセンブリが含まれている必要があります。
プロジェクトを公開 してこれらのアセンブリを生成できます。アセンブリは、linux-x64
ターゲットランタイム用にビルドする必要があります。ReadyToRun
コンパイルを有効にしてパフォーマンスを改善できます。
アセンブリの生成方法の詳細については、パッケージコード を参照してください。
このプロセスを自動化する方法の詳細については、ローカルデプロイの自動化 を参照してください。
以下のステップに従って、アセンブリを生成するように IDE を設定します。
JetBrains Rider
JetBrains Rider IDE を使用してアセンブリを生成するには、以下のステップに従います。
- 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 IDE を使用してアセンブリを生成するには、以下のステップに従います。
- ソリューションを右クリックしてから、Publish (公開) を選択します。
- 画面のステップに従って、ファイルをローカルに格納します。
- Show All Settings (すべての設定の表示) を選択します。
- ターゲットランタイムを linux-x64 に設定します。
- Save (保存) を選択します。
- Publish (公開) を選択します。
アセンブリの圧縮
デフォルトでは、公開プロセスはルートプロジェクトディレクトリの下の bin/Release/net6.0/linux-x64/publish
パスにフォルダーを生成します。このフォルダーのコンテンツをアーカイブに圧縮する必要があります。UGS CLI を使用してモジュールをデプロイする 場合は、アーカイブの拡張子を .ccm に変更することをお勧めします。
ノート: Windows のエクスプローラーを使用している場合、アーカイブの拡張子を .ccm に変更するには、一般的なファイル名拡張子を有効にする 必要があります。
Unix システムでは、以下のコマンドを実行できます。
zip ExampleModule.ccm *
Windows システムでは、以下のコマンドを実行できます。
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 をインストール します。
プロジェクト 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>
正常なデプロイでは以下の出力が返されます。
Deployed:
ExampleModule.ccm
ゲームからのモジュール関数の呼び出し
モジュールをデプロイした後で、ゲームクライアントからモジュール関数を呼び出すことができます。
前提条件
Unity エディターで Cloud Code を使用するには、最初に Cloud Code SDK をインストールし、Unity Gaming Services プロジェクト を Unity エディターにリンクする必要があります。
プロジェクトのリンク
Unity Gaming Services プロジェクト を Unity エディターにリンクします。UGS プロジェクト ID は Unity Dashboard にあります。
Unity エディターで、Edit (編集) > Project Settings (プロジェクト設定) > Services (サービス) の順に選択します。
プロジェクトをリンクします。
プロジェクトに Unity プロジェクト ID がない場合:- Create a Unity Project ID (Unity プロジェクト ID の作成) > Organizations (組織) の順に選択し、ドロップダウンから組織を選択します。
- Create project ID (プロジェクト ID を作成) を選択します。
既存の Unity プロジェクト ID がある場合:- Use an existing Unity project ID (既存の Unity プロジェクト ID を使用) を選択します。
- ドロップダウンから組織とプロジェクトを選択します。
- Link project ID (プロジェクト ID をリンク) を選択します。
Unity プロジェクト ID が表示され、プロジェクトが Unity サービスにリンクされました。また、UnityEditor.CloudProjectSettings.projectId
を使用して Unity エディタースクリプトのプロジェクト ID にアクセスすることもできます。
SDK のインストール
Unity エディターの最新の Cloud Code パッケージをインストールするには、以下を行います。
- Unity エディターで、Window (ウィンドウ) > Package Manager (パッケージマネージャー) を開きます。
- Package Manager で、Unity Registry (Unity レジストリ) のリストビューを選択します。
com.unity.services.cloudcode
を検索するか、リストから Cloud Code パッケージを探します。- このパッケージを選択し、Install (インストール) をクリックします。
ノート: Unity Package Manager インターフェースについて理解するには、Package Manager ウィンドウ (Unity マニュアル) を参照してください。
SDK の設定
Cloud Code SDK の使用を準備するには、以下を行います。
- Cloud Code サービスダッシュボードページを介してサービスが有効になっていることを確認します。
- Cloud Code と Authentication SDK の両方をインストールしたことを確認します。
- Edit (編集) > Project Settings (プロジェクト設定) > Services (サービス) を選択して、Unity エディター内からクラウドプロジェクトにサインインします。
- Unity エディターで新しい C# Monobehaviour スクリプトを作成します。Unity マニュアルの スクリプトの作成と使用 を参照してください。
- スクリプトで、await
UnityServices.InitializeAsync()
を使用して Core SDK を初期化します。 - スクリプトで、Authentication SDK を初期化します。
ノート: プレイヤーが Cloud Code サービスにアクセスするには有効なプレイヤー ID とアクセストークンが必要です。いずれかの Cloud Code API を使用する前にプレイヤーを Authentication SDK で認証する必要があります。これを匿名認証用の以下のコードスニペットで行うか、詳細および他のサインイン方法について Authentication SDK のドキュメントを確認できます。
C#
await AuthenticationService.Instance.SignInAnonymouslyAsync();
モジュール関数の呼び出し
ゲームクライアントからモジュール関数を呼び出すには、呼び出しを認証し、サービスの機能のいずれかを呼び出す前に Services Core SDK を初期化 し、モジュール関数を呼び出す必要があります。
ゲームクライアントを使用してモジュールを呼び出す方法の詳細については、Unity Runtime からのモジュールの実行 を参照してください。
以下のステップに従って、モジュール関数を呼び出します。
- Services Core SDK を初期化します。Cloud Code を呼び出す前に、Services Core 名前空間 (
Unity.Services.Core
) をインポートすることによりゲームコード内で Unity Services を初期化し、InitializeAsync
メソッドを呼び出します。 - 呼び出しの認証を行います。Cloud Code への各呼び出しは認証される必要があり、プレイヤーが Cloud Code サービスにアクセスするには有効なプレイヤー ID とアクセストークンが必要です。認証 を参照してください。
SignInAnonymouslyAsync
メソッドを呼び出して、匿名認証の使用の準備をすることをお勧めします。 - モジュール関数を呼び出します。Cloud Code SDK を使用して、
CallEndpointModuleAsync
メソッドを使用するモジュール関数を呼び出します。
ノート: CallEndpointModuleAsync
関数は、Cloud Code SDK バージョン 2.3.0 以上でのみ使用可能です。
インテグレーションのサンプル
以下は、ゲームクライアント内のモジュール ExampleModule
からモジュール関数 SayHello
を呼び出す方法の例です。
C#
using 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);
}
}
}
重要: 初めてモジュール関数を呼び出す場合、応答が開始するまで時間がかかることがあります。タイムアウトを受け取った場合は、コンソールに Hello, World!
の出力が開始するまでコードを再度実行します。
次のステップ
最初のモジュールのデプロイ後に、次のステップについて学習します。
トピック | 説明 |
---|---|
モジュール構造 | モジュール構造をよく理解します。 |
モジュールコードの初期化 | モジュールで DTO と依存性注入を使用する方法を学習します。 |
ローカルデプロイの自動化 | ビルドターゲットでローカルデプロイを自動化します。 |
CI/CD とのインテグレーション | モジュールを CI/CD パイプラインに統合します。 |
他の Unity サービスとのインテグレーション | モジュールを他の Unity Gaming Services と統合します。 |
コードのパッケージ化 | モジュールのアセンブリを生成する方法を学習します。 |
単体テストの作成 | モジュールの単体テストを記述します。 |
プッシュメッセージの送信 | モジュールを使用してプレイヤーにメッセージを送信します。 |