Unity API Reference
Complete API reference for the Vidya Unity SDK.
Core Classes
VidyaSDK
The main entry point for interacting with Vidya in Unity.
public class VidyaSDK : MonoBehaviour
{
// Singleton instance
public static VidyaSDK Instance { get; }
// Properties
public AuthModule Auth { get; }
public InventoryModule Inventory { get; }
public MarketplaceModule Marketplace { get; }
public CraftingModule Crafting { get; }
public GachaModule Gacha { get; }
public LeaderboardModule Leaderboard { get; }
public SocialModule Social { get; }
public NPCModule NPC { get; }
public CurrencyModule Currency { get; }
public QuestModule Quest { get; }
public StatsModule Stats { get; }
// Methods
public async Task Initialize(VidyaConfig config)
public async Task<Project> GetProject()
public Session GetSession()
public void SetSession(Session session)
public void ClearSession()
// Events
public event Action<Session> OnSessionChanged;
public event Action<VidyaError> OnError;
}
Player
Represents a player in the game with full type safety.
public class Player
{
// Static factory methods
public static Player FromSession(Session session)
public static Player FromWallet(string wallet)
// Properties
public string Id { get; }
public string Wallet { get; }
public bool CanWrite { get; }
// Methods
public void RequireWrite()
public async Task<PlayerProfile> GetProfile()
public async Task<PlayerStats> GetStats()
public async Task<Achievement[]> GetAchievements()
// Equality
public bool Equals(Player other)
public override int GetHashCode()
}
Item
Represents an in-game item with Unity-specific features.
public class Item
{
// Properties
public int Id { get; }
public string Name { get; }
public string Description { get; }
public string Image { get; }
public ItemAttribute[] Attributes { get; }
public string Owner { get; }
public int Balance { get; }
public bool Equipped { get; }
public bool Tradeable { get; }
public bool Consumable { get; }
public bool Stackable { get; }
public int MaxStack { get; }
public CharacterSlot CharacterSlot { get; }
// Unity-specific
public Sprite Sprite { get; }
public GameObject Prefab { get; }
// Methods
public async Task Transfer(Player to, int quantity = 1)
public async Task Equip()
public async Task Unequip()
public async Task Consume(int quantity = 1)
public async Task<Listing> List(BigInteger price, int quantity = 1)
public async Task<Listing[]> GetListings()
public async Task Burn(int quantity = 1)
// Unity helpers
public void LoadSprite(Action<Sprite> callback)
public GameObject Instantiate(Transform parent = null)
}
Modules
AuthModule
Handles authentication in Unity.
public class AuthModule
{
// Methods
public async Task<Session> Login(LoginOptions options)
public async Task Logout()
public async Task<Session> RefreshSession()
public Session GetSession()
// OAuth providers
public async Task<Session> LoginWithGoogle()
public async Task<Session> LoginWithDiscord()
public async Task<Session> LoginWithTwitter()
// Wallet authentication
public async Task<Session> LoginWithWallet(WalletLoginOptions options)
public async Task<string> ConnectWallet(WalletType type)
// Events
public event Action<Session> OnLogin;
public event Action OnLogout;
public event Action<Session> OnSessionRefreshed;
}
InventoryModule
Manages player inventory with Unity integration.
public class InventoryModule
{
// Item retrieval
public async Task<Item[]> GetItems(Player player)
public async Task<Item> GetItem(Player player, Func<Item, bool> predicate)
public async Task<Item> GetItem(Player player, int id)
public async Task<Item[]> GetEquippedItems(Player player)
// Item operations
public async Task EquipItem(EquipParams parameters)
public async Task UnequipItem(UnequipParams parameters)
public async Task TransferItem(TransferParams parameters)
public async Task ConsumeItem(ConsumeParams parameters)
// Batch operations
public async Task TransferBatch(BatchTransferParams parameters)
public async Task EquipBatch(BatchEquipParams parameters)
// Unity-specific
public InventoryUI CreateInventoryUI(Canvas canvas)
public void BindToSlot(InventorySlot slot, Item item)
// Events
public event Action<Item[]> OnItemsChanged;
public event Action<Item> OnItemEquipped;
public event Action<Item> OnItemUnequipped;
public event Action<Item, int> OnItemConsumed;
}
MarketplaceModule
Unity marketplace integration.
public class MarketplaceModule
{
// Listing management
public async Task<Listing> CreateListing(CreateListingParams parameters)
public async Task CancelListing(string listingId)
public async Task<Listing[]> GetListings(ListingFilter filter = null)
public async Task<Listing[]> GetPlayerListings(Player player)
// Trading
public async Task BuyListing(string listingId, int quantity = 1)
public async Task<Offer> MakeOffer(OfferParams parameters)
public async Task AcceptOffer(string offerId)
public async Task RejectOffer(string offerId)
public async Task<Offer[]> GetOffers(Player player)
// Price data
public async Task<PricePoint[]> GetItemPriceHistory(int itemId)
public async Task<BigInteger> GetFloorPrice(int itemId)
public async Task<MarketStats> GetMarketStats(int itemId)
// Unity UI
public MarketplaceUI CreateMarketplaceUI(Canvas canvas)
public ListingCard CreateListingCard(Listing listing, Transform parent)
// Events
public event Action<Listing> OnListingCreated;
public event Action<Sale> OnListingSold;
public event Action<Listing> OnListingCancelled;
}
CraftingModule
Crafting system for Unity.
public class CraftingModule
{
// Recipe management
public async Task<Recipe[]> GetRecipes()
public async Task<Recipe> GetRecipe(int recipeId)
public async Task<Recipe[]> GetAvailableRecipes(Player player)
// Crafting
public async Task<Item[]> Craft(Player player, int recipeId, int quantity = 1)
public async Task<CraftingCost> GetCraftingCost(int recipeId, int quantity = 1)
public async Task<bool> CanCraft(Player player, int recipeId, int quantity = 1)
// Batch crafting
public async Task<Item[]> CraftBatch(Player player, CraftBatchParams[] recipes)
// Unity UI
public CraftingUI CreateCraftingUI(Canvas canvas)
public void ShowCraftingAnimation(Recipe recipe, Action onComplete)
// Events
public event Action<CraftResult> OnItemCrafted;
public event Action<Recipe> OnRecipeUnlocked;
}
GachaModule
Gacha/loot box system for Unity.
public class GachaModule
{
// Gacha pools
public async Task<GachaPool[]> GetPools()
public async Task<GachaPool> GetPool(string poolId)
// Rolling
public async Task<GachaResult> Roll(Player player, string poolId, int count = 1)
public async Task<RollCost> GetRollCost(string poolId, int count = 1)
public async Task<PityStatus> GetPityStatus(Player player, string poolId)
// History
public async Task<RollHistory[]> GetRollHistory(Player player, string poolId = null)
public async Task<DropRate[]> GetDropRates(string poolId)
// Unity animations
public void PlayGachaAnimation(GachaResult result, Canvas canvas, Action onComplete)
public GameObject CreateGachaEffect(Rarity rarity)
// Events
public event Action<GachaResult> OnRoll;
public event Action<PityTrigger> OnPityTriggered;
}
LeaderboardModule
Leaderboard system with Unity UI.
public class LeaderboardModule
{
// Leaderboard access
public async Task<Leaderboard[]> GetLeaderboards()
public async Task<LeaderboardData> GetLeaderboard(string leaderboardId)
public async Task<RankData> GetPlayerRank(Player player, string leaderboardId)
// Rankings
public async Task<LeaderboardEntry[]> GetTopPlayers(string leaderboardId, int limit = 100)
public async Task<LeaderboardEntry[]> GetNearbyPlayers(Player player, string leaderboardId, int range = 10)
public async Task<LeaderboardEntry[]> GetFriendRankings(Player player, string leaderboardId)
// Score submission
public async Task SubmitScore(Player player, string leaderboardId, int score)
// Unity UI
public LeaderboardUI CreateLeaderboardUI(Canvas canvas)
public void ShowRankChangeAnimation(RankChange change, Vector3 position)
// Events
public event Action<RankChange> OnRankChanged;
public event Action<LeaderboardData> OnLeaderboardUpdated;
}
SocialModule
Social features for Unity games.
public class SocialModule
{
// Friends
public async Task<Friend[]> GetFriends(Player player)
public async Task SendFriendRequest(Player from, Player to)
public async Task AcceptFriendRequest(Player player, string requestId)
public async Task RemoveFriend(Player player, string friendId)
public async Task BlockPlayer(Player player, string targetId)
// Guilds
public async Task<Guild> CreateGuild(Player player, CreateGuildParams parameters)
public async Task JoinGuild(Player player, string guildId)
public async Task LeaveGuild(Player player)
public async Task<Guild> GetGuild(string guildId)
public async Task<GuildMember[]> GetGuildMembers(string guildId)
// Messaging
public async Task SendMessage(Player from, Player to, string message)
public async Task<Message[]> GetMessages(Player player)
// Unity UI
public FriendsListUI CreateFriendsListUI(Canvas canvas)
public GuildUI CreateGuildUI(Canvas canvas)
public ChatUI CreateChatUI(Canvas canvas)
// Events
public event Action<FriendRequest> OnFriendRequest;
public event Action<Message> OnMessage;
public event Action<GuildInvite> OnGuildInvite;
}
NPCModule
AI-powered NPCs for Unity.
public class NPCModule
{
// NPC interactions
public async Task<NPC[]> GetNPCs()
public async Task<NPC> GetNPC(string npcId)
public async Task<NPCResponse> TalkToNPC(Player player, string npcId, string message)
// NPC state
public async Task<Relationship> GetNPCRelationship(Player player, string npcId)
public async Task<Item[]> GetNPCInventory(string npcId)
// Trading with NPCs
public async Task TradeWithNPC(Player player, string npcId, NPCTradeParams parameters)
public async Task<NPCShop> GetNPCShop(string npcId)
// Unity integration
public NPCController CreateNPCController(GameObject npcObject)
public void ShowDialogue(NPCResponse response, DialogueUI ui)
// Events
public event Action<NPCInteraction> OnNPCInteraction;
public event Action<RelationshipChange> OnRelationshipChange;
}
Unity-Specific Components
MonoBehaviour Components
// Inventory slot component
[RequireComponent(typeof(Image))]
public class InventorySlot : MonoBehaviour
{
public Item Item { get; set; }
public event Action<Item> OnItemClicked;
public event Action<Item> OnItemDropped;
public void SetItem(Item item)
public void Clear()
public void Highlight(bool active)
}
// Item display component
public class ItemDisplay : MonoBehaviour
{
public Image Icon;
public Text Name;
public Text Quantity;
public GameObject EquippedIndicator;
public void SetItem(Item item)
public void UpdateQuantity(int quantity)
}
// Marketplace listing card
public class ListingCard : MonoBehaviour
{
public Image ItemIcon;
public Text ItemName;
public Text Price;
public Text Seller;
public Button BuyButton;
public void SetListing(Listing listing)
public void OnBuyClicked()
}
ScriptableObjects
// Vidya configuration asset
[CreateAssetMenu(fileName = "VidyaConfig", menuName = "Vidya/Config")]
public class VidyaConfigAsset : ScriptableObject
{
public string ProjectId;
public Environment Environment = Environment.Production;
public string ApiUrl;
public bool Debug;
}
// Item template for editor
[CreateAssetMenu(fileName = "ItemTemplate", menuName = "Vidya/Item Template")]
public class ItemTemplate : ScriptableObject
{
public int ItemId;
public Sprite Icon;
public GameObject Prefab;
public AudioClip UseSound;
public ParticleSystem UseEffect;
}
Types and Enums
Core Types
public class VidyaConfig
{
public string ProjectId { get; set; }
public Environment Environment { get; set; }
public string ApiUrl { get; set; }
public string WsUrl { get; set; }
public bool Debug { get; set; }
}
public enum Environment
{
Development,
Staging,
Production
}
public enum CharacterSlot
{
None = 0,
Head = 1,
Body = 2,
Legs = 3,
Feet = 4,
Hands = 5,
Weapon = 6,
Shield = 7,
Accessory = 8
}
Authentication Types
public class Session
{
public string Id { get; set; }
public PlayerInfo Player { get; set; }
public string Wallet { get; set; }
public DateTime ExpiresAt { get; set; }
public string RefreshToken { get; set; }
}
public class LoginOptions
{
public AuthProvider Provider { get; set; }
public string RedirectUrl { get; set; }
}
public enum AuthProvider
{
Google,
Discord,
Twitter,
Wallet
}
public enum WalletType
{
MetaMask,
WalletConnect,
Phantom,
Coinbase
}
Item Types
public class ItemAttribute
{
public int Id { get; set; }
public string Name { get; set; }
public object Value { get; set; }
public string DisplayValue { get; set; }
}
public class EquipParams
{
public Player Player { get; set; }
public Item Item { get; set; }
public CharacterSlot? Slot { get; set; }
}
public class TransferParams
{
public Player From { get; set; }
public Player To { get; set; }
public Item Item { get; set; }
public int Quantity { get; set; }
}
Marketplace Types
public class Listing
{
public string Id { get; set; }
public string Seller { get; set; }
public Item Item { get; set; }
public BigInteger Price { get; set; }
public int Quantity { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime? ExpiresAt { get; set; }
}
public class ListingFilter
{
public int? ItemId { get; set; }
public string Seller { get; set; }
public BigInteger? MinPrice { get; set; }
public BigInteger? MaxPrice { get; set; }
public CharacterSlot? CharacterSlot { get; set; }
public AttributeFilter[] Attributes { get; set; }
}
Gacha Types
public class GachaPool
{
public string Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public GachaItem[] Items { get; set; }
public Cost Cost { get; set; }
public PitySystem PitySystem { get; set; }
}
public class GachaResult
{
public Item[] Items { get; set; }
public Animation[] Animations { get; set; }
public int? PityProgress { get; set; }
}
public enum Rarity
{
Common = 1,
Uncommon = 2,
Rare = 3,
Epic = 4,
Legendary = 5
}
Error Handling
public class VidyaException : Exception
{
public ErrorCode Code { get; }
public object Details { get; }
public VidyaException(string message, ErrorCode code, object details = null)
: base(message)
{
Code = code;
Details = details;
}
}
public enum ErrorCode
{
// Authentication
Unauthenticated,
Unauthorized,
SessionExpired,
// Validation
InvalidParameter,
InsufficientBalance,
ItemNotFound,
// Operations
OperationFailed,
TransactionFailed,
RateLimited,
// Network
NetworkError,
Timeout
}
Editor Integration
// Custom inspector for Vidya items
[CustomEditor(typeof(ItemTemplate))]
public class ItemTemplateEditor : Editor
{
public override void OnInspectorGUI()
{
// Custom inspector UI
}
}
// Vidya menu items
public static class VidyaMenu
{
[MenuItem("Vidya/Setup Wizard")]
public static void ShowSetupWizard()
{
// Show setup wizard
}
[MenuItem("Vidya/Item Browser")]
public static void ShowItemBrowser()
{
// Show item browser window
}
[MenuItem("Vidya/Documentation")]
public static void OpenDocumentation()
{
Application.OpenURL("https://docs.vidya.game");
}
}
Utilities
// BigInteger extensions for Unity
public static class BigIntegerExtensions
{
public static string ToEtherString(this BigInteger wei, int decimals = 18)
public static BigInteger ToWei(this decimal ether, int decimals = 18)
}
// Sprite loading utilities
public static class SpriteLoader
{
public static async Task<Sprite> LoadFromUrl(string url)
public static Sprite CreateFromTexture(Texture2D texture)
}
// Coroutine helpers
public static class CoroutineHelpers
{
public static Coroutine ToCoroutine(this Task task, MonoBehaviour behaviour)
public static IEnumerator AsCoroutine(this Task task)
}