Intermediate

 

An introduction to Unity

This tutorial provides an introduction to Unity, a popular game development platform, and how to integrate it with Ethereum-based technologies such as ERC721 tokens and EVM practices. The tutorial assumes a basic understanding of Unity, ERC721, and EVM practices. The documentation supports WebGL, IOS, and Android builds and recommends using a Mobile Development IDE with Device Simulation Capabilities such as Xcode to test mobile builds. DefiConnect is required for the Login Example, and some scenes require assets to work properly. The tutorial provides instructions on downloading and installing Unity, importing the web3.unity folders into the project, and using EVM methods such as Player Account, Block Number, Balance Of, Verify, Nonce, and Convert WEI to CRO and CRO to WEI. The tutorial also includes information on the Chain Overview and how to import the ChainSafe Package from Github or Releases.

Pre-requisites

This SDK assumes that you have a basic understanding of Unity, ERC721 and EVM practices.

Supported OS

This documentation currently supports WebGL, IOS and Android builds. Other platforms may work but there is no guarantee. We will extend our support to other platforms after we have stabilized our current architecture.

Other Requirements

  • Mobile IDE: If you want to test your Mobile Builds we recommend you to download a Mobile Development IDE with Device Simulation Capabilities such as Xcode.

  • DefiConnect: DefiConnect is required for the Login Example.

  • Assets: Some of the scenes require assets to work properly. If you do not have any assets you can always use the Cronos Testnet and generate some ERC721 test assets. You can read more around integration methods here.

Download and install Unity

You can refer to the Unity Download Section

Unity Build Modules

Depending on your preferred build settings we recommend to install platform packages for WebGL, IOS and Android from your Unity build settings.

Chain Overview

You can use the following RPC methods. By default, we use the mainnet rpc method.

Testnet

  • RPC Method: https://evm-dev-t3.cronos.org

  • Chain ID: 338

Import ChainSafe Package

Github

You can clone the following repository.

$ git clone git@github.com:ChainSafe/web3.unity.git

 

Releases

Or you can download the latest releases

Create a new Unity Project

Create a new project directly from your Unity Hub. In the next step Choose 3D as your project type.

Upload web3.unity Folders into Project

Now you have to import the content of the cloned repository (web3.unity) directly into your newly created project assets folder.

EVM

A standard interface for EVM methods

This section contains the different types of EVM methods that can be used in the Unity SDK. For additional operations and methods please refer to the ChainSafe Documentation.

Player Account

PlayerPrefs.GetString(“Account”) is the user’s wallet account accessed after the LoginScene.

string account = PlayerPrefs.GetString("Account");
print(account);

 

Important: If you run your script from the editor, you will have to hardcode the account string (e.g. “0x6e…”)

Block number

Get the current latest block number

string chain = "cronos";
string network = "mainnet"; // mainnet or testnet

int blockNumber = await EVM.BlockNumber(chain, network);
print(blockNumber); Some code

 

Balance Of

Get the balance of the native blockchain

string chain = "cronos";
string network = "mainnet"; // mainnet or testnet
string account = "WALLET_ADDRESS";

string balance = await EVM.BalanceOf(chain, network, account, rpc);
print(balance);

 

Verify

Verify a signed message.

string message = "YOUR_MESSAGE";
string signature = "YOUR_SIGNATURE";

string address = await EVM.Verify(message, signature);
print(address);

 

Nonce

Print Nonce.

string chain = "cronos";
string network = "mainnet"; // mainnet or testnet
string account = "WALLET_ADDRESS";
string rpc = "https://evm-dev.cronos.org";

string nonce = await EVM.Nonce(chain, network, account, rpc);
print(nonce); chain = "cronos";

 

Convert WEI to CRO and CRO to WEI

Converts WEI values

float cro = float.Parse("0.1");
float decimals = 1000000000000000000; // 18 decimals
float wei = cro * decimals;
print(Convert.ToDecimal(wei).ToString());

float wei = float.Parse("10123755");
float decimals = 1000000000000000000; // 18 decimals
float cro = wei / decimals;
print(Convert.ToDecimal(cro).ToString());