ドキュメント

サポート

Cloud Code

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 にあります。
  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 サービスにリンクされました。また、
UnityEditor.CloudProjectSettings.projectId
を使用して Unity エディタースクリプトのプロジェクト ID にアクセスすることもできます。

SDK のインストール

Unity エディターの最新の Cloud Code パッケージをインストールするには、以下を行います。
  1. Unity エディターで、Window (ウィンドウ) > Package Manager (パッケージマネージャー) を開きます。
  2. Package Manager で、Unity Registry (Unity レジストリ) のリストビューを選択します。
  3. com.unity.services.cloudcode
    を検索するか、リストから Cloud Code パッケージを探します。
  4. このパッケージを選択し、Install (インストール) をクリックします。

SDK の設定

Cloud Code SDK の使用を準備するには、以下を行います。
  1. Cloud Code サービスダッシュボードページを介してサービスが有効になっていることを確認します。
  2. Cloud Code と Authentication SDK の両方をインストールしたことを確認します。
  3. Edit (編集) > Project Settings... (プロジェクト設定...) > Services (サービス) を選択して、Unity エディター内からクラウドプロジェクトにサインインします。
  4. Unity エディターで新しい C# Monobehaviour スクリプトを作成します。Unity マニュアルの スクリプトの作成と使用 を参照してください。
  5. スクリプトで、await
    UnityServices.InitializeAsync()
    を使用して Core SDK を初期化します。
  6. スクリプトで、Authentication SDK を初期化します。

典型的なワークフロー

Cloud Code SDK は、Unity エディター内で通常の MonoBehaviour C# スクリプトから呼び出すことができます。
  1. Unity Engine 内で C#
    MonoBehaviour
    スクリプトを作成します。Unity - マニュアル:スクリプトの作成と使用 を参照してください。
  2. MonoBehaviour
    スクリプト内で、Unity Authentication サービスを設定します。
  3. MonoBehaviour
    スクリプト内で、Cloud Code SDK の呼び出しを追加します。
  4. MonoBehaviour
    スクリプトをゲームオブジェクトにアタッチします。エディターのスクリプト に関するドキュメントを参照してください。
  5. Play (再生) を選択し、プロジェクトを実行して Cloud Code の動作を確認します。

認証

プレイヤーが Cloud Code サービスにアクセスするには有効なプレイヤー ID とアクセストークンが必要です。いずれかの Cloud Code API を使用する前にプレイヤーを Authentication SDK で認証する必要があります。C# Monobehaviour スクリプトの内部で Authentication SDK を初期化することで、これを行うことができます。プレイヤーの認証 を参照してください。 Authentication SDK を初期化するには、C# Monobehaviour スクリプトに以下を追加します。 C#
await AuthenticationService.Instance.SignInAnonymouslyAsync();
使用の準備をするには、匿名認証の使用をお勧めします。以下の例は、認証パッケージを使用して匿名認証を開始し、Unity エディター内でスクリプトにプレイヤー ID を記録する方法を示しています。 C#
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;
以下のサンプルでは、次のコードを使用してモジュール
HelloWorld
RollDice
というエンドポイントでデプロイしたと仮定しています。
using 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 スクリプト
RollDiceExample
を Unity エディターで作成し、以下のコードを加えます。
C#
using 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.Instance
の下にある
CallModuleEndpointAsync
API クライアントメソッドも使用できます。
C#
/// <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
    パラメーターは、モジュールエンドポイントに渡すパラメーターのディクショナリです。
Unity エディターで C# Monobehaviour スクリプト
RollDiceExample
を作成します。以下は、Authentication と Cloud Code の両方をスクリプトに統合する方法の完全な例です。
using 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();}