Unity
Unity integration
Introduction
The users can buy Virtual Items either individually or in packs. After a virtual item is purchased it will be added to the user's inventory. You can use the PLAY Dev Dashboard to create new store offers and virtual items.
Each store offer can contain one or more virtual items to sell. Price info data is also part of the store offer. It is also possible to sell virtual items without creating store offers.
Buy Virtual Items and Store offers
In case the virtual item contains prices information
using System.Collections.Generic;
using UnityEngine;
using RGN.Modules.Store;
using RGN.Modules.VirtualItems;
using RGN.Modules.Currency;
using RGN.Modules.Inventory;
public class StoreExamples : MonoBehaviour
{
public async void BuyVirtualItemAsync(VirtualItem virtualItem)
{
List<string> itemsToPurchase = new List<string>() { virtualItem.id };
PurchaseResult purchaseResult = await StoreModule.I.BuyVirtualItemsAsync(itemsToPurchase);
// purchaseResult returns the purchased items and updated currencies
List<Currency> updatedCurrencies = purchaseResult.updatedCurrencies;
List<InventoryItemData> purchasedItems = purchaseResult.items;
}
}
Purchase from store offer
using System.Collections.Generic;
using UnityEngine;
using RGN.Modules.Store;
using RGN.Modules.Currency;
using RGN.Modules.Inventory;
public class StoreExamples : MonoBehaviour
{
public async void BuyStoreOfferAsync()
{
PurchaseResult purchaseResult = await StoreModule.I.BuyStoreOfferAsync("storeOfferId");
// purchaseResult Returns the purchased items and updated currencies
List<Currency> updatedCurrencies = purchaseResult.updatedCurrencies;
List<InventoryItemData> purchasedItems = purchaseResult.items;
}
}
Get store offer
using System.Collections.Generic;
using UnityEngine;
using RGN.Modules.Store;
public class StoreExamples : MonoBehaviour
{
public async void GetStoreOfferAsync()
{
// Get the first 10 offer
List<StoreOffer> offers = await StoreModule.I.GetWithVirtualItemsDataForCurrentAppAsync(10);
// Pick the first returned offer for log purposes
StoreOffer firstStoreOffer = offers[0];
Debug.Log($"Store offer id : {firstStoreOffer.id}");
// Log the virtuals items name for this offer
foreach (var virtualItem in firstStoreOffer.virtualItems)
{
Debug.Log($"Virtual item name : {virtualItem.name}");
}
}
}
Buy Virtual Items NFT
In order to purchase NFTs, there is some additional check you will need to do to make sure the user has all the requirements. Here's an example:
using System.Collections.Generic;
using UnityEngine;
using RGN;
using RGN.Modules.Wallets;
using RGN.Modules.SignIn;
using RGN.Modules.Store;
public class NFTPurchaseExamples : MonoBehaviour
{
private async void BuyNFTVirtualItem()
{
bool authWithEmail = RGNCoreBuilder.I.CurrentAuthState.AuthProvider == EnumAuthProvider.Email;
if (!authWithEmail)
{
EmailSignInModule.I.TryToSignIn();
return;
}
bool hasBlockchainRequirement = await WalletsModule.I.IsUserHasBlockchainRequirementAsync();
if (!hasBlockchainRequirement)
{
WalletsModule.I.CreateWallet();
return;
}
List<string> virtualItemIds = new List<string> { "myNftVirtualItemId" };
PurchaseResult purchaseResult = await StoreModule.I.BuyVirtualItemsAsync(virtualItemIds);
}
}
Was this helpful?