WebGLGetArray.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334
  1. using Newtonsoft.Json;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. using Web3Unity.Scripts.Library.Ethers.Contracts;
  5. using Web3Unity.Scripts.Library.Ethers.Providers;
  6. #if UNITY_WEBGL
  7. public class WebGLGetArray : MonoBehaviour
  8. {
  9. // contract to interact with
  10. string contractAddress = "0x5244d0453A727EDa96299384370359f4A2B5b20a";
  11. // abi in json format
  12. string abi =
  13. "[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"setStore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"bought\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStore\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]";
  14. // smart contract method to call
  15. string method = "getStore";
  16. // Address TextField
  17. public Text playerAddresses;
  18. public async void GetArrayDataWeb()
  19. {
  20. var provider = new JsonRpcProvider("YOUR_NODE");
  21. var contract = new Contract(abi, contractAddress, provider);
  22. Debug.Log("Gas Price: " + await provider.GetGasPrice());
  23. var gasPrice = await provider.GetGasPrice();
  24. var gasValue = await contract.EstimateGas("getStore", new object[] { });
  25. Debug.Log("Gas Value: " + gasValue.Value);
  26. var calldata = await contract.Call(method);
  27. string json = JsonConvert.SerializeObject(calldata[0], Formatting.Indented);
  28. string[] addresses = JsonConvert.DeserializeObject<string[]>(json);
  29. if (addresses != null) Debug.Log("Addresses: " + addresses[0]);
  30. if (addresses != null) playerAddresses.text = addresses[0];
  31. }
  32. }
  33. #endif