기술 자료

지원

Economy

Economy

플레이어 인벤토리

Use the SDK to manage player inventory items including adding, updating, and deleting items.
읽는 시간 1분최근 업데이트: 17일 전

PlayerInventory
네임스페이스에서 메서드를 사용하면 플레이어 인벤토리 인스턴스를 가져오고 업데이트할 수 있습니다.
이러한 메서드는 현재 Authentication SDK에서 로그인된 플레이어의 인벤토리 데이터를 반환합니다.

GetInventoryAsync

현재 로그인된 플레이어와 연결된 현재 인벤토리 아이템 인스턴스를 가져옵니다. 이 메서드는 필요에 따라
GetInventoryOptions
오브젝트를 사용합니다. 이를 통해 각 가져오기의 아이템 수를 설정하고 필터링할 수 있습니다.
구성 아이템 ID 목록이나
PlayersInventoryItem
ID를 사용하여 인벤토리 아이템을 필터링할 수 있습니다. 이러한 필터 옵션을 사용하면 특정 구성 아이템 ID와
PlayersInventoryItem
ID에 포함된 플레이어 아이템만 반환됩니다.
다음 샘플 코드는 현재 사용자의 첫 아이템 5개를 가져온 후, 그 다음 5개를 가져옵니다.
// Optional, defaults to 20GetInventoryOptions options = new GetInventoryOptions{ ItemsPerFetch = 5};GetInventoryResult inventoryResult = await EconomyService.Instance.PlayerInventory.GetInventoryAsync(options);List<PlayersInventoryItem> firstFiveItems = inventoryResult.PlayersInventoryItems;// do something with your itemsif (inventoryResult.HasNext) { inventoryResult = await inventoryResult.GetNextAsync(5); List<PlayersInventoryItem> nextFiveItems = inventoryResult.PlayersInventoryItems; // do something with your items}
다음 샘플 코드는 플레이어의
SWORD
아이템만 가져옵니다.
GetInventoryOptions options = new GetInventoryOptions{ InventoryItemIds = new List<string>() { "SWORD" }};GetInventoryResult inventoryResult = await EconomyService.Instance.PlayerInventory.GetInventoryAsync(options);List<PlayersInventoryItem> listOfItems = inventoryResult.PlayersInventoryItems;// ... etc
이 메서드는
GetInventoryResult
를 반환합니다.

GetInventoryOptions

GetInventoryAsync
호출의 옵션 오브젝트입니다. 포함되는 필드는 다음과 같습니다.
  • PlayersInventoryItemIds
    : 문자열 목록입니다. 기본값은
    null
    입니다. 플레이어 인벤토리에서 가져오려는 아이템의
    PlayersInventoryItem
    ID입니다.
  • InventoryItemIds
    : 문자열 목록입니다. 기본값은
    null
    입니다. 가져오려는 아이템의 구성 ID입니다.
  • ItemsPerFetch
    : 정수입니다. 기본값은 20입니다. 이를 통해 1~100까지 호출당 가져올 최대 아이템 수를 설정합니다.

GetInventoryResult

GetInventoryResult
는 가져온 플레이어의 인벤토리 아이템 목록에 대해 페이지가 지정된 액세스를 제공합니다. 포함되는 필드는 다음과 같습니다.
  • PlayersInventoryItems
    :
    List<PlayersInventoryItem>
    과 현재 가져온 아이템이 있습니다.
포함되는 메서드는 다음과 같습니다.
  • GetNextAsync(int itemsToFetch = 20)
    : 이 메서드는 비동기식으로 더 많은 결과를 가져옵니다. 여기에는 필요에 따라 가져오는 결과를 제한하는 파라미터 1개가 포함됩니다. 1~100으로 설정할 수 있으며 기본값은 20입니다.
    PlayersInventoryItems
    목록에는 원래 아이템과 새로 가져온 아이템이 모두 포함된 새 결과가 반환됩니다. 가져올 결과가 더 없으면 결과값은
    null
    이 됩니다.

AddInventoryItemAsync

플레이어의 인벤토리에 아이템을 추가합니다. 이 메서드는 필요에 따라
AddInventoryItemOptions
오브젝트를 사용합니다. 이를 통해 커스텀
PlayersInventoryItemId
를 설정합니다. 값이
null
이면 자동으로 하나가 생성됩니다. 인스턴스 데이터의 딕셔너리를 설정하는 데 사용할 수도 있습니다.
플레이어 인벤토리에 추가된 인벤토리 아이템을 나타내는
PlayersInventoryItem
이 반환됩니다.
Dictionary<string, object> instanceData = new Dictionary<string, object>{ { "rarity", "purple" }};AddInventoryItemOptions options = new AddInventoryItemOptions{ PlayersInventoryItemId = "customID", InstanceData = instanceData };PlayersInventoryItem createdInventoryItem = await EconomyService.Instance.PlayerInventory.AddInventoryItemAsync("SWORD", options);

AddInventoryItemOptions

AddInventoryItemAsync
호출의 옵션 오브젝트입니다. 포함되는 필드는 다음과 같습니다.
  • PlayersInventoryItemId
    : 문자열이며, 기본값은
    null
    입니다. 생성된
    PlayersInventoryItem
    의 ID를 설정합니다. 설정되지 않으면 하나가 생성됩니다.
  • InstanceData
    :
    Dictionary<string, object>
    입니다. 인스턴스 데이터의 딕셔너리를 설정하는 데 사용됩니다.

DeletePlayersInventoryItemAsync

플레이어 인벤토리에서 아이템을 삭제합니다. 이 메서드는 필요에 따라 쓰기 잠금을 설정하는 데 사용되는
DeletePlayersInventoryItemOptions
오브젝트를 사용합니다. 쓰기 잠금이 입력되면 Economy 서비스에서 쓰기 잠금이 허용된 경우에만 아이템이 삭제됩니다. 쓰기 잠금이 입력되지 않으면 작업이 강제로 실행됩니다.
DeletePlayersInventoryItemOptions options = new DeletePlayersInventoryItemOptions{ WriteLock = "writeLock"};EconomyService.Instance.PlayerInventory.DeletePlayersInventoryItemAsync("playersInventoryItemID", options);

DeletePlayersInventoryItemOptions

DeletePlayersInventoryItemAsync
호출의 옵션 오브젝트입니다. 포함되는 필드는 다음과 같습니다.
  • WriteLock
    : 문자열이며, 기본값은
    null
    입니다. 이 문자열을 사용하여 낙관적 동시성을 위한 쓰기 잠금을 설정합니다. 쓰기 잠금을 참고하십시오.

UpdatePlayersInventoryItemAsync

새 인스턴스 데이터를 사용하여 아이템을 업데이트합니다. 업데이트된 플레이어 인벤토리 아이템이 반환됩니다. 이 메서드는 필요에 따라 쓰기 잠금을 설정하는 데 사용되는
UpdatePlayersInventoryItemOptions
오브젝트를 사용합니다. 쓰기 잠금이 입력되면 Economy 서비스에서 쓰기 잠금이 허용된 경우에만 아이템이 업데이트됩니다. 쓰기 잠금이 입력되지 않으면 작업이 강제로 실행됩니다.
Dictionary<string, object> instanceData = new Dictionary<string, object>{ { "rarity", "purple" }};UpdatePlayersInventoryItemOptions options = new UpdatePlayersInventoryItemOptions{ WriteLock = writeLock };PlayersInventoryItem playersInventoryItem = await EconomyService.Instance.PlayerInventory.UpdatePlayersInventoryItemAsync("playersInventoryItemID", instanceData, options);

UpdatePlayersInventoryItemOptions

UpdatePlayersInventoryItemAsync
호출의 옵션 오브젝트입니다. 포함되는 필드는 다음과 같습니다.
  • WriteLock
    : 문자열이며, 기본값은
    null
    입니다. 이 문자열을 사용하여 낙관적 동시성을 위한 쓰기 잠금을 설정합니다. 쓰기 잠금을 참고하십시오.

PlayersInventoryItem

PlayersInventoryItem
은 플레이어 인벤토리에 있는 단일 고유 아이템입니다. 포함되는 필드는 다음과 같습니다.
  • PlayersInventoryItemId
    : 플레이어 인벤토리에 있는 이 고유한 인벤토리 아이템의 ID입니다.
  • InstanceItemId
    : 이 인벤토리 아이템의 구성 ID입니다.
  • InstanceData
    : 이 플레이어 인벤토리 아이템과 연결된 모든 인스턴스 데이터입니다.
  • InstanceDataDeserializable
    :
    IDeserializable
    로 이 플레이어 인벤토리 아이템과 연결된 모든 인스턴스 데이터입니다. InstanceDataDeserializable 사용을 참고하십시오.
  • WriteLock
    : 이 플레이어 인벤토리 아이템의 현재
    writelock
    문자열입니다.
  • Created
    : 이 플레이어 인벤토리 아이템이 생성된 날짜입니다. EconomyDate 오브젝트입니다.
  • Modified
    : 이 플레이어 인벤토리 아이템이 수정된 날짜입니다. EconomyDate 오브젝트입니다.
다음의 헬퍼 메서드도 포함되어 있습니다.

GetItemDefinitionAsync

이 메서드는 이 플레이어의 인벤토리 아이템 구성(
InventoryItemDefinition
유형)을 가져옵니다.
PlayersInventoryItem playersInventoryItem = // ... fetch the players inventory itemInventoryItemDefinition itemDefinition = playersInventoryItem.GetItemDefinitionAsync();

PlayersInventoryItemUpdated

이 이벤트를 구독하면 SDK에서 플레이어 인벤토리의 특정 아이템이 업데이트될 때 알림을 받을 수 있습니다. 구독자에게는 업데이트된 아이템의
playersInventoryItem
ID가 전달됩니다.
EconomyService.Instance.PlayerInventory.PlayersInventoryItemUpdated += playersInventoryItemID => { Debug.Log($"The players inventory item that was updated was {playersInventoryItemID}");};

InstanceDataDeserializable 사용

InstanceDataDeserializable
을 사용하여 플레이어 인벤토리의 특정 아이템에 대해 커스텀 데이터를 추가합니다. 이는
object
유형으로 전달되고
IDeserializable
유형으로 가져옵니다. 이렇게 하면 커스텀 클래스를 인스턴스 데이터로 전달할 수 있습니다.
예를 들어 플레이어의 방패에 내구성 등급이 있다고 가정해 봅니다. 이를 설정하고 업데이트하는 데
InstanceDataDeserializable
을 사용할 수 있습니다.
class MyInstanceData { public int Durability; public string Rarity; }MyInstanceData myInstanceData = new MyInstanceData() { Durability = 100, Rarity = "purple"};PlayersInventoryItem updatedItem = await EconomyService.Instance.PlayerInventory.UpdatePlayersInventoryItemAsync("playersInventoryItemId", myInstanceData);
다음 작업을 수행하여 인스턴스 데이터를 역직렬화할 수 있습니다.
MyInstanceData fetchedInstanceData = updatedItem.InstanceData.GetAs<MyInstanceData>();int durability = fetchedInstanceData.Durability;string rarity = fetchedInstanceData.Rarity;