Unity Runtime からの呼び出し
Unity エディターで認証されたゲームクライアントから呼び出すことでモジュールエンドポイントを実行します。
前提条件
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 ウィンドウ を参照し、Unity Package Manager インターフェースについて理解してください。
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 SDK は、Unity エディター内で通常の MonoBehaviour C# スクリプトから呼び出すことができます。
- Unity Engine 内で C# MonoBehaviour スクリプトを作成します。Unity - マニュアル: スクリプトの作成と使用 を参照してください。
- スクリプト内で、Unity Authentication サービスを設定します。
- スクリプト内で、Cloud Code SDK の呼び出しを追加します。
- 新しく作成したスクリプトをゲームオブジェクトにアタッチします。エディターのスクリプト に関するドキュメントを参照してください。
- 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 スクリプトの完全なインテグレーション例
以下のコードを使用してモジュール HelloWorld
を RollDice
というエンドポイントでデプロイした場合:
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 を参照してください。