Unity Runtime からの呼び出し

Unity エディターで認証されたゲームクライアントから呼び出すことでモジュールエンドポイントを実行します。

前提条件

Unity エディターで Cloud Code を使用するには、最初に Cloud Code SDK をインストールし、Unity Gaming Services プロジェクト を Unity エディターにリンクする必要があります。

プロジェクトのリンク

Unity Gaming Services プロジェクト を Unity エディターにリンクします。UGS プロジェクト ID は Unity 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 (インストール) をクリックします。

Unity - マニュアル: Package Manager ウィンドウ を参照し、Unity Package Manager インターフェースについて理解してください。

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. スクリプト内で、Unity Authentication サービスを設定します。
  3. スクリプト内で、Cloud Code SDK の呼び出しを追加します。
  4. 新しく作成したスクリプトをゲームオブジェクトにアタッチします。エディターのスクリプト に関するドキュメントを参照してください。
  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 エディタープロジェクトに統合します。

C#

Using Unity.Services.CloudCode;

作成したモジュールエンドポイントを実行するには、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 属性でラベルを付けたモジュールエンドポイントの名前です。

C# Monobehaviour スクリプトの完全なインテグレーション例

以下のコードを使用してモジュール HelloWorldRollDice というエンドポイントでデプロイした場合:

using Unity.Services.CloudCode.Core;

namespace Sample;

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; }
    }


    public const int DiceSides = 6;

    [CloudCodeFunction("RollDice")]
    public async Task<Response> RollDice()
    {
        var random = new Random();
        var roll = random.Next(1, DiceSides);

        return new Response(roll, DiceSides);
    }
}

以下は、Authentication と Cloud Code の両方をスクリプトに統合する方法の完全な例です。

C#

using UnityEngine;
using Unity.Services.Authentication;
using Unity.Services.CloudCode;

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");

        // Log the response of the module endpoint in console
        Debug.Log($"You rolled {response.Roll} / {response.Sides}");
    }
}

Cloud Code モジュールからのレスポンスをお好みのタイプにシリアル化できます。Cloud Code SDK の詳細については、Cloud Code SDK API を参照してください。