手動ワークフロー
Create a C# module manually with control over the module deployment process.
読み終わるまでの所要時間 5 分最終更新 23日前
このセクションでは、プロジェクトで 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 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# モジュール内にエンドポイントを作成するには、外部呼び出し可能な関数を作成し、CloudCodeFunctionnameSayHellousing Unity.Services.CloudCode.Core;namespace ExampleModule;public class MyModule{ [CloudCodeFunction("SayHello")] public string Hello(string name) { return $"Hello, {name}!"; }}
コードのパッケージ化
モジュールをデプロイする前に、コードをアーカイブにパッケージ化する必要があります。 このアーカイブには、Cloud Code サービスがモジュールを実行するために必要とするアセンブリが含まれている必要があります。 これらのアセンブリを生成するために プロジェクトを公開 できます。linux-x64ReadyToRun- アセンブリの生成方法の詳細については、パッケージコード を参照してください。
- このプロセスを自動化する方法の詳細については、ローカルデプロイの自動化 を参照してください。
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
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 をインストール します。
- 以下のコマンドを使用して、プロジェクト 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 エディターにリンクする必要があります。プロジェクトのリンク
UGS プロジェクト ID は Unity Cloud Dashboard にあります。以下のステップに従って、Unity Gaming Services プロジェクト を Unity エディターにリンクします。- 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 をリンク) を選択します。
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 と Authentication SDK の両方をインストールしたことを確認します。
- Edit (編集) > Project Settings (プロジェクト設定) > Services (サービス) を選択して、Unity エディター内からクラウドプロジェクトにサインインします。
- Unity エディターで新しい C# Monobehaviour スクリプトを作成します。Unity マニュアルの スクリプトの作成と使用 を参照してください。
- スクリプトで、await を使用して Core SDK を初期化します。
UnityServices.InitializeAsync() - スクリプトで、Authentication SDK を初期化します。
await AuthenticationService.Instance.SignInAnonymouslyAsync();
モジュール関数の呼び出し
ゲームクライアントからモジュール関数を呼び出すには、呼び出しを認証し、サービスの機能のいずれかを呼び出す前に Services Core SDK を初期化 し、モジュール関数を呼び出す必要があります。 ゲームクライアントを使用してモジュールを呼び出す方法の詳細については、Unity Runtime からのモジュールの実行 を参照してください。 以下のステップに従って、モジュール関数を呼び出します。- Services Core SDK を初期化します。Cloud Code を呼び出す前に、Services Core 名前空間 () をインポートすることによりゲームコード内で Unity Services を初期化し、
Unity.Services.Coreメソッドを呼び出します。InitializeAsync - 呼び出しの認証を行います。Cloud Code への各呼び出しは認証される必要があり、プレイヤーが Cloud Code サービスにアクセスするには有効なプレイヤー ID とアクセストークンが必要です。認証 を参照してください。メソッドを呼び出して、匿名認証の使用の準備をすることをお勧めします。
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); } }}