Unity Runtime からの呼び出し
Invoke module endpoints from an authenticated game client in the Unity Editor.
読み終わるまでの所要時間 3 分最終更新 23日前
Unity エディターで認証されたゲームクライアントから呼び出すことでモジュールエンドポイントを実行します。
前提条件
Unity エディターで Cloud Code を使用するには、最初に Cloud Code SDK をインストールし、Unity Gaming Services プロジェクト を Unity エディターにリンクする必要があります。プロジェクトのリンク
Unity Gaming Services プロジェクト を Unity エディターにリンクします。UGS プロジェクト ID は Unity Cloud 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 がない場合:
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 の使用を準備するには、以下を行います。- Cloud Code サービスダッシュボードページを介してサービスが有効になっていることを確認します。
- Cloud Code と Authentication SDK の両方をインストールしたことを確認します。
- Edit (編集) > Project Settings... (プロジェクト設定...) > Services (サービス) を選択して、Unity エディター内からクラウドプロジェクトにサインインします。
- Unity エディターで新しい C# Monobehaviour スクリプトを作成します。Unity マニュアルの スクリプトの作成と使用 を参照してください。
- スクリプトで、await を使用して Core SDK を初期化します。
UnityServices.InitializeAsync() - スクリプトで、Authentication SDK を初期化します。
典型的なワークフロー
Cloud Code SDK は、Unity エディター内で通常の MonoBehaviour C# スクリプトから呼び出すことができます。- Unity Engine 内で C# スクリプトを作成します。Unity - マニュアル:スクリプトの作成と使用 を参照してください。
MonoBehaviour - スクリプト内で、Unity Authentication サービスを設定します。
MonoBehaviour - スクリプト内で、Cloud Code SDK の呼び出しを追加します。
MonoBehaviour - スクリプトをゲームオブジェクトにアタッチします。エディターのスクリプト に関するドキュメントを参照してください。
MonoBehaviour - Play (再生) を選択し、プロジェクトを実行して Cloud Code の動作を確認します。
認証
プレイヤーが Cloud Code サービスにアクセスするには有効なプレイヤー ID とアクセストークンが必要です。いずれかの Cloud Code API を使用する前にプレイヤーを Authentication SDK で認証する必要があります。C# Monobehaviour スクリプトの内部で Authentication SDK を初期化することで、これを行うことができます。プレイヤーの認証 を参照してください。 Authentication SDK を初期化するには、C# Monobehaviour スクリプトに以下を追加します。 C#使用の準備をするには、匿名認証の使用をお勧めします。以下の例は、認証パッケージを使用して匿名認証を開始し、Unity エディター内でスクリプトにプレイヤー ID を記録する方法を示しています。 C#await AuthenticationService.Instance.SignInAnonymouslyAsync();
using Unity.Services.Authentication;using System.Threading.Tasks;using Unity.Services.Core;using UnityEngine;public class AuthenticationExample : MonoBehaviour{ internal async Task Awake() { await UnityServices.InitializeAsync(); await SignInAnonymously(); } private async Task SignInAnonymously() { AuthenticationService.Instance.SignedIn += () => { var playerId = AuthenticationService.Instance.PlayerId; Debug.Log("Signed in as: " + playerId); }; AuthenticationService.Instance.SignInFailed += s => { // Take some action here... Debug.Log(s); }; await AuthenticationService.Instance.SignInAnonymouslyAsync(); }}
Cloud Code モジュールエンドポイントの呼び出し
新規に作成したスクリプトに認証を追加すると、Cloud Code モジュールエンドポイントを呼び出す準備が整います。以下の名前空間を追加して、Cloud Code を Unity エディタープロジェクトに統合します。以下のサンプルでは、次のコードを使用してモジュールUsing Unity.Services.CloudCode;
HelloWorldRollDiceusing System;using System.Threading.Tasks;using Unity.Services.CloudCode.Core;namespace HelloWorld;public class HelloWorld{ public class Response { public Response(int roll, int sides) { Roll = roll; Sides = sides; } public int Roll { get; set; } public int Sides { get; set; } } [CloudCodeFunction("RollDice")] public async Task<Response> RollDice(int diceSides) { var random = new Random(); var roll = random.Next(1, diceSides); return new Response(roll, diceSides); }}
エディターのバインディングの使用
Cloud Code モジュールについてエディターのバインディングを生成して、Unity エディターインターフェースで使用できます。詳細については、バインディングの生成 を参照してください。 以下の例は、Unity エディターから Cloud Code モジュールを呼び出すタイプセーフの方法です。C# MonoBehaviour スクリプトRollDiceExampleusing Unity.Services.Authentication;using Unity.Services.CloudCode;using Unity.Services.CloudCode.GeneratedBindings;using Unity.Services.Core;using UnityEngine;public class RollDiceExample : 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.RollDice(6); Debug.Log($"You've rolled {result.Roll}/{result.Sides}"); } catch (CloudCodeException exception) { Debug.LogException(exception); } }}
CallModuleEndpointAsync の使用
CloudCodeService.InstanceCallModuleEndpointAsync/// <summary>/// Calls a Cloud Code function./// </summary>/// <param name="module">Cloud Code Module to call</param>/// <param name="function">Cloud Code function to call.</param>/// <param name="args">Arguments for the cloud code function. Will be serialized to JSON.</param>/// <typeparam name="TResult">Serialized from JSON returned by Cloud Code.</typeparam>/// <returns>Serialized output from the called function.</returns>/// <exception cref="CloudCodeException">Thrown if request is unsuccessful.</exception>/// <exception cref="CloudCodeRateLimitedException">Thrown if the service returned rate limited error.</exception>Task<TResult> CallModuleEndpointAsync<TResult>(string module, string function, Dictionary<string, object> args = null);
- パラメーターはモジュールの名前です。
module - パラメーターは、
function属性でラベルを付けたモジュールエンドポイントの名前です。CloudCodeFunction - パラメーターは、モジュールエンドポイントに渡すパラメーターのディクショナリです。
args
RollDiceExampleusing System.Collections.Generic;using UnityEngine;using Unity.Services.Authentication;using Unity.Services.CloudCode;using Unity.Services.Core;public class RollDiceExample : MonoBehaviour{ // ResultType structure is the serialized response from the RollDice script in Cloud Code private class ResultType { public int Roll; public int Sides; } // Call this method public async void CallMethod() { await UnityServices.InitializeAsync(); // Sign in anonymously into the Authentication service if (!AuthenticationService.Instance.IsSignedIn) await AuthenticationService.Instance.SignInAnonymouslyAsync(); // Call out to the RollDice endpoint in the HelloWorld module in Cloud Code var response = await CloudCodeService.Instance.CallModuleEndpointAsync<ResultType>("HelloWorld", "RollDice", new Dictionary<string, object>( ) { { "diceSides", 6 } }); // Log the response of the module endpoint in console Debug.Log($"You rolled {response.Roll} / {response.Sides}"); }}
スクリプトの実行
スクリプトを実行するには、Unity エディターでゲームオブジェクトにアタッチしてから、Play (再生) を選択します。 以下のコードをStart()CallMethod()public void Start(){ CallMethod();}