다른 Unity 서비스와 연동
Integrate Cloud Code with various Unity Gaming Services using C# Software Development Kits or REST APIs.
읽는 시간 2분최근 업데이트: 한 달 전
Cloud Code를 최대한 활용할 수 있도록 C# Service SDK나 REST API를 사용하여 다양한 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 클래스 사용
GameApiClientGameApiClientICloudCodeSetupGameApiClientpublic 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 클래스 사용
AdminApiClientAdminApiClientICloudCodeSetupAdminApiClientpublic 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를 통해 직접 서비스를 연결할 수 있습니다.Authentication
사용 사례에 따라AccessTokenServiceTokenServiceToken