Unity

Unity integration

Introduction

After the user purchases a Virtual Item, it is automatically added to the user's Inventory during the transaction process. It is possible also to add a virtual item to the user's inventory without going through the purchase process for non-NFT items.

InventoryItem
  • id (string): Unique inventory id for this item.

  • virtualItemId (string): Id of the virtual item stored in the inventory.

  • quantity (int): Amount of items store in this inventory slot.

  • appIds (List<string>): List of project id where this item will be accessible.

  • tags (List<string>): List of tags used for filtering items.

  • properties (List<Property>): List of properties for this inventory item.

Retrieving inventory items with Virtual Items data

The following method gets all inventory items for the currently logged in player.

using System.Collections.Generic;
using UnityEngine;
using RGN.Modules.Inventory;

public class InventoryExamples : MonoBehaviour
{
    private async void GetUserInventory()
    {
        List<InventoryItemData> inventory = await InventoryModule.I.GetWithVirtualItemsDataForCurrentAppAsync();
        foreach (var inventoryItem in inventory)
        {
            Debug.Log($"Virtual item id : {inventoryItem.virtualItemId}");
            Debug.Log($"Virtual item name : {inventoryItem.virtualItem.name}");
        }
    }
}

Add to inventory

Add to inventory can be use to add regular virtual items into the player inventory. NFT's cannot be added to the inventory with this function.

using UnityEngine;
using RGN.Modules.Inventory;

public class InventoryExamples : MonoBehaviour
{
    private async void AddToUserInventory()
    {
        string virtualItemId = "virtualItemToAdd";
        await InventoryModule.I.AddToInventoryAsync(virtualItemId);
    }
}

Set Properties

using UnityEngine;
using RGN.Modules.Inventory;

public struct MyCustomProperties
{
    public int BonusHealth;
    public float DamageMultiplier;
}

public class InventoryExamples : MonoBehaviour
{
    private async void SetPropertiesInInventory()
    {
        string inventoryItemId = "inventoryItemId";

        MyCustomProperties customProperties = new MyCustomProperties
        {
            BonusHealth = 50,
            DamageMultiplier = 1.5f
        };
        string jsonProperties = JsonUtility.ToJson(customProperties);

        await InventoryModule.I.SetPropertiesAsync(inventoryItemId, jsonProperties);
    }
}

Get properties

using UnityEngine;
using RGN.Modules.Inventory;

public struct MyCustomProperties
{
    public int BonusHealth;
    public float DamageMultiplier;
}

public class InventoryExamples : MonoBehaviour
{
    private async void GetPropertiesInInventory()
    {
        string inventoryItemId = "inventoryItemId";
        string jsonProperties = await InventoryModule.I.GetPropertiesAsync(inventoryItemId);
        MyCustomProperties customProperties = JsonUtility.FromJson<MyCustomProperties>(jsonProperties);
        Debug.Log($"Bonus health : {customProperties.BonusHealth} \n" +
            $"Damage multiplier : {customProperties.DamageMultiplier}");
    }
}