기술 자료

지원

Cloud Code

Cloud Code

다른 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 클라이언트

GameApiClient
AdminApiClient
클래스는 Cloud Code C# SDK 중심의 래퍼이며, 간소화된 인터페이스를 제공하여 Cloud Code 모듈에서 UGS(Unity Gaming Services)를 호출하도록 지원합니다. 하지만 이 클래스는 서로 다른 목적에 맞게 작동하며, 별개의 사용 사례에 따라 사용되도록 설계되었습니다.

GameApiClient 클래스 사용

GameApiClient
클래스는 UGS에서 제공되는 표준 게임 서비스와 상호 작용하도록 특별히 맞춤화된 클래스입니다. 플레이어별 기능(예: 게임 데이터 저장과 검색)과 관련된 Cloud Code 모듈에서 UGS 서비스를 호출하는 프로세스를 간소화해 줍니다. 제공된 예시에서는 클래스를 사용하여 Cloud Save 기능과 상호 작용하여 플레이어 데이터를 저장하고 검색하는 방법을 보여 줍니다.
GameApiClient
인터페이스를 사용하려면
ICloudCodeSetup
컨피규레이터에서
GameApiClient
싱글톤으로 등록합니다.
public class ModuleConfig : ICloudCodeSetup{ public void Setup(ICloudCodeConfig config) { config.Dependencies.AddSingleton(GameApiClient.Create()); }}

사용 예시

CloudCodeFunction
속성을 부여하는 모든 함수에서
GameApiClient
클래스를 사용할 수 있습니다.
GameApiClient
클래스를 사용하려면 함수에 파라미터로
IGameApiClient
인터페이스를 전달합니다.
다음은 Cloud Save에서 데이터를 저장하고 읽는 방법을 보여 주는 예시입니다.
using 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 클래스 사용

AdminApiClient
클래스는 UGS 서비스의 관리 기능에 액세스하기 위한 목적으로 설계되었습니다. 이 클래스는 Cloud Code 모듈에서 UGS 관리 관련 서비스를 호출할 때 간소화된 인터페이스를 제공합니다. 예시에서는 관리 작업에서의 유틸리티를 보여 주며, AdminApiClient를 사용하여 리더보드를 생성하는 방법을 나타냅니다.
AdminApiClient
인터페이스를 사용하려면
ICloudCodeSetup
컨피규레이터에서
AdminApiClient
싱글톤으로 등록합니다.
public class ModuleConfig : ICloudCodeSetup{ public void Setup(ICloudCodeConfig config) { config.Dependencies.AddSingleton(AdminApiClient.Create()); }}

사용 예시

GameApiClient
와 유사하게
AdminApiClient
클래스는 CloudCodeFunction으로 속성이 지정된 모든 함수에서 사용 가능합니다.
AdminApiClient
클래스를 사용할 때 함수에 파라미터로
IAdminApiClient
인터페이스를 전달합니다.
다음 예시는 리더보드 생성 방법을 보여 줍니다.
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

사용 사례에 따라
AccessToken
이나
ServiceToken
을 사용하여 API 호출을 인증할 수 있습니다.
ServiceToken
을 사용하여 UGS 클라이언트 API를 인증하려는 경우, 호출하려는 서비스가 서비스 토큰을 지원하는지 확인하십시오. 서비스 토큰을 지원하는 서비스와 사용 사례 목록은 서비스 및 액세스 토큰 지원 기술 자료를 참고하시기 바랍니다.

API 호출

종속성 삽입을 사용하면 API 인터페이스를 싱글톤으로 생성하여 모듈에 삽입할 수 있습니다.