他の Unity サービスとのインテグレーション
Integrate Cloud Code with various Unity Gaming Services using C# Software Development Kits or REST APIs.
読み終わるまでの所要時間 3 分最終更新 23日前
Cloud Code の可能性を最大限に引き出すために、C# Service SDK または REST API を使用して、Cloud Code をさまざまな Unity Gaming Services とシームレスに統合できます。 C# SDK は、よりシンプルで一貫性のある体験を提供し、Unity Gaming Services へのアクセスが便利になります。利用したい Unity Gaming Services のサービスにすでに Cloud Code C# SDK がある場合は、それを利用して、よりスムーズに統合できます。ただし、特定の UGS サービスに Cloud Code C# SDK がない場合は、REST API を通じて直接接続できる柔軟性があります。
UGS SDK を使用して UGS に接続する
NuGet から Cloud Code C# サービス SDK にアクセスするには、Com.Unity.Services.CloudCode.Apis を検索します。パッケージをインストールした後で、C# モジュール内でそれを使用して、他の Unity サービスに接続する方法を簡略化できます。
Cloud Code C# SDK の完全なリストについては、利用可能なライブラリ のページを参照してください。
API クライアント
GameApiClientAdminApiClientGameApiClient クラスの使用
GameApiClientGameApiClientGameApiClientICloudCodeSetuppublic class ModuleConfig : ICloudCodeSetup{ public void Setup(ICloudCodeConfig config) { config.Dependencies.AddSingleton(GameApiClient.Create()); }}
使用例
CloudCodeFunctionGameApiClientGameApiClientIGameApiClientusing Microsoft.Extensions.DependencyInjection;using Microsoft.Extensions.Logging;using Unity.Services.CloudCode.Apis;using Unity.Services.CloudCode.Core;using Unity.Services.CloudCode.Shared;using Unity.Services.CloudSave.Model;namespace ExampleModule;public class CloudSaveSdkSample{ private static ILogger<CloudSaveSdkSample> _logger; public CloudSaveSdkSample(ILogger<CloudSaveSdkSample> logger) { _logger = logger; } [CloudCodeFunction("SaveData")] public async Task SaveData(IExecutionContext context, IGameApiClient gameApiClient, string key, object value) { try { await gameApiClient.CloudSaveData.SetItemAsync(context, context.AccessToken, context.ProjectId, context.PlayerId, new SetItemBody(key, value)); } catch (ApiException ex) { _logger.LogError("Failed to save data. Error: {Error}", ex.Message); throw new Exception($"Failed to save data for playerId {context.PlayerId}. Error: {ex.Message}"); } } [CloudCodeFunction("GetData")] public async Task<object> GetData(IExecutionContext context, IGameApiClient gameApiClient, string key) { try { var result = await gameApiClient.CloudSaveData.GetItemsAsync(context, context.AccessToken, context.ProjectId, context.PlayerId, new List<string> { key }); return result.Data.Results.First().Value; } catch (ApiException ex) { _logger.LogError("Failed to get data. Error: {Error}", ex.Message); throw new Exception($"Failed to get data for playerId {context.PlayerId}. Error: {ex.Message}"); } } public class ModuleConfig : ICloudCodeSetup { public void Setup(ICloudCodeConfig config) { config.Dependencies.AddSingleton(GameApiClient.Create()); } }}
AdminApiClient クラスの使用
AdminApiClientAdminApiClientAdminApiClientICloudCodeSetuppublic class ModuleConfig : ICloudCodeSetup{ public void Setup(ICloudCodeConfig config) { config.Dependencies.AddSingleton(AdminApiClient.Create()); }}
使用例
GameApiClientAdminApiClientAdminApiClientIAdminApiClient
以下の例は、リーダーボードを作成する方法を示しています。
using Microsoft.Extensions.DependencyInjection;using Microsoft.Extensions.Logging;using Unity.Services.CloudCode.Apis;using Unity.Services.CloudCode.Apis.Admin;using Unity.Services.CloudCode.Core;using Unity.Services.CloudCode.Shared;using Unity.Services.Leaderboards.Admin.Model;namespace ExampleModule;public class ModuleMain{ private static ILogger<ModuleMain> _logger; public ModuleMain(ILogger<ModuleMain> logger) { _logger = logger; } [CloudCodeFunction("CreateLeaderboard")] public async Task CreateLeaderboard(IExecutionContext context, IAdminApiClient adminApiClient) { try { await adminApiClient.Leaderboards.CreateLeaderboardAsync( executionContext: context, serviceAccountKey: "YOUR_SERVICE_ACCOUNT_KEY", serviceAccountSecret: "YOUR_SERVICE_ACCOUNT_SECRET", projectId: Guid.Parse(context.ProjectId), environmentId: Guid.Parse(context.EnvironmentId), leaderboardIdConfig: new LeaderboardIdConfig( id: "new-leaderboard", name: "new-leaderboard", sortOrder: SortOrder.Asc, updateType: UpdateType.KeepBest ) ); } catch (ApiException ex) { _logger.LogError("Failed to create a Leaderboard. Error: {Error}", ex.Message); throw new Exception($"Failed to create a Leaderboard. Error: {ex.Message}"); } } public class ModuleConfig : ICloudCodeSetup { public void Setup(ICloudCodeConfig config) { config.Dependencies.AddSingleton(AdminApiClient.Create()); } }}
REST API を通じた UGS への接続
C# SDK がまだないサービスを使用する場合は、それらの REST API を通じてサービスに直接接続することもできます。認証
ユースケースに応じて、AccessTokenServiceTokenServiceToken