Best in class Web3 SDK for Unity games
- WebGL
- Desktop (coming soon)
- Android (coming soon)
- iOS (coming soon)
Head over to the releases page and download the latest .unitypackage
file.
Drag and drop the file into your project.
The package comes with a sample Scene showcasing the different capabilities of the SDK.
- Open your
Build settings
, selectWebGL
as the target platform. - Open
Player settings
>Resolution and Presentation
and underWebGLTemplate
chooseThirdweb
. - Save and click
Build and Run
to test out your game in a browser.
Note that in order to communicate with the SDK, you need to Build and run
your project so it runs in a browser context.
// instantiate a read only SDK on any EVM chain
var sdk = new ThirdwebSDK("goerli");
// connect the user's wallet - supports Metamask, Coinbase Wallet, WalletConnect and more
var walletAddress = await sdk.wallet.Connect();
// interact with the wallet
CurrencyValue balance = await sdk.wallet.GetBalance();
var signature = await sdk.wallet.Sign("message to sign");
// get an instance of a deployed contract (no ABI requried!)
var contract = sdk.GetContract("0x...");
// fetch data from any ERC20/721/1155 or marketplace contract
CurrencyValue currencyValue = await contract.ERC20.TotalSupply();
NFT erc721NFT = await contract.ERC721.Get(tokenId);
List<NFT> erc1155NFTs = await contract.ERC1155.GetAll();
List<Listing> listings = await marketplace.GetAllListings();
// execute transactions from the connected wallet
await contract.ERC20.Mint("1.2");
await contract.ERC721.signature.Mint(signedPayload);
await contract.ERC1155.Claim(tokenId, quantity);
await marketplace.BuyListing(listingId, quantity);
// deploy contracts from the connected wallet
var address = await sdk.deployer.DeployNFTCollection(new NFTContractDeployMetadata {
name = "My Personal Unity Collection",
primary_sale_recipient = await sdk.wallet.GetAddress(),
});
The Examples
folder contains a demo scene using our user-friendly prefabs, check it out!
All Prefabs require the ThirdwebManager prefab to get the SDK Instance, drag and drop it into your scene and select the networks you want to support from the Inspector.
Connect Wallet Prefab - All-in one drag & drop wallet supporting multiple wallet providers, network switching, balance displaying and more!
- Drag and drop it into your scene and select the wallet providers you want to support from the Inspector.
- You may also choose whether you want to activate the Network Switching feature (leave unchecked if your app only requires one network).
NFT Loader - Standalone drag & drop grid/scroll view of NFTs you ask it to display!
- Go to the prefab's Settings in the Inspector.
- Load specific NFTs with token ID.
- Load a specific range of NFTs.
- Load NFTs owned by a specific wallet.
- Or any combination of the above - they will all be displayed automatically in a grid view with vertical scroll!
- Customize the prefab's ScrollView and Content gameobjects if you want your content to behave differently.
NFT Prefab - Displays an NFT by calling LoadNFT through script!
- Instantiate this Prefab through script.
- Get its Prefab_NFT component.
- Call the LoadNFT function and pass it your NFT struct to display your fetched NFT's images automatically.
- Customize the prefab to add text/decorations and customize LoadNFT to use your NFT's metadata if you want to populate that text.
NFT nft = await contract.ERC721.Get(0);
Prefab_NFT nftPrefabScript = Instantiate(nftPrefab);
nftPrefabScript.LoadNFT(nft);
See full documentation on the thirdweb portal.