Nethereum.Unity 库是一个特定于 Nethereum 的 Unity 库和 API,它支持 UnityWebRequest 使用 RPC over Http 与 Ethereum 交互 。Nethereum.Unity 库是唯一支持在 Unity 中使用协程时使用 IEnumerator 和 yield 的库 。
用自己熟悉的语言学习 以太坊开发 : Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart1、Nethereum.Unity简介如果想在 net461 / netstandard 中使用 async / await 和 Tasks,只要你的环境不需要使用 UnityWebRequest 而不是 HttpRequest,也可以使用与“vanilla” Nethereum 相同的方式 。(Webgl 需要使用 UnityWebRequest)
【苹果7a1660多少钱】Nethereum 还为 net351 和 net461 框架构建提供了 AoT 库 。所有“dll”都可以从 Nethereum github 下载 。
flappy eth 是 Unity3d 的“flappy”示例,使用 Nethereum 作为 webgl dapp 游戏转换为 与 Ethereum、Infura 和 Metamask 交互 。主要集成组件的源代码可以在这里找到, 你也可以在这里尝试游戏 。
2、Unity3dSimpleSample示例简介Unity3dSimpleSample是使用 Net472(现在从 Net461 升级)进行 Unity3d 开发的简单示例,使用的 Unity 版本是 2020.3.15f LTS 。示例中包含资产文件夹中的所有 DLL,你可能不需要其中一些代码,直接删除它们(如 Besu、Geth、HdWallet、NBitcoin 等)就可以了,具体 取决于你的需要 。
示例代码演示了如何使用Nethereum.Unity实现以下功能:
- 在异步和协程中使用 Unity.UI 将当前 BlockNumber 输出到日志
- 使用 Unity.UI 和协程进行以太传输
- ETH转账时使用 1559 Suggestion 策略或 Legacy 模式
- 智能合约部署(ERC20)、交易(Transfer)和查询(Balance)
注意:下面是桌面版的截图:
WebGL 仅支持协程 UnityWebRequest 。如果构建 WebGL版本发生问题,请取消选中 Development Build 。为了支持 WebGL 和 AOT,此示例使用 Net472AOT dll 和自定义 Json.Net Unity请记住删除 Nethereum 发布包的 System.HttpClient 和 UnityEngine
下面是WebGL版的截图:
要运行本地区块链,可以使用预配置的测试链 。
3、异步查询区块号 — 非协程方式下面的代码展示了如何用Nethereum.Unity异步查询区块号:
1234567891011121314151617181920212223242526272829303132333435363738394041424344
using System;using System.Collections;using System.Collections.Generic;using System.Net;using System.Net.Security;using System.Security.Cryptography.X509Certificates;using Nethereum.ABI.FunctionEncoding.Attributes;using UnityEngine;using UnityEngine.UI;using Nethereum.Contracts;using Nethereum.Web3;public class GetLatestBlockVanillaNethereum : MonoBehaviour {private static bool TrustCertificate(object sender, X509Certificate x509Certificate, X509Chain x509Chain, SslPolicyErrors sslPolicyErrors){// all certificates are acceptedreturn true;}public string Url = "https://mainnet.infura.io";public InputField ResultBlockNumber;public InputField InputUrl;// Use this for initializationvoid Start(){InputUrl.text = Url;}public async void GetBlockNumber() {Url = InputUrl.text;//This is to workaround issue with certificates https://forum.unity.com/threads/how-to-allow-self-signed-certificate.522183///Uncomment if needed// ServicePointManager.ServerCertificateValidationCallback = TrustCertificate;var web3 = new Web3(Url);var blockNumber = await web3.Eth.Blocks.GetBlockNumber.SendRequestAsync();ResultBlockNumber.text = blockNumber.Value.ToString();}}
4、异步查询区块号 — 协程方式下面的代码展示了如何用Nethereum.Unity以协程方式异步查询区块号:12345678910111213141516171819202122232425262728293031323334353637
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using Nethereum.JsonRpc.UnityClient;using Nethereum.RPC.Eth.DTOs;using Nethereum.Util;public class GetLatestBlockCoroutine : MonoBehaviour{public string Url = "https://mainnet.infura.io";public InputField ResultBlockNumber;public InputField InputUrl;// Use this for initializationvoid Start(){InputUrl.text = Url;}public void GetBlockNumberRequest(){StartCoroutine(GetBlockNumber());}public IEnumerator GetBlockNumber(){Url = InputUrl.text;var blockNumberRequest = new EthBlockNumberUnityRequest(Url);yield return blockNumberRequest.SendRequest();ResultBlockNumber.text = blockNumberRequest.Result.Value.ToString();}}
5、ETH转账的简单实现为了支持ETH转账,Nethereum 提供了一个特定的 Unity 请求,EthTransferUnityRequest.EthTransferUnityRequest 使用我们的以太坊客户端的“url”、能够签署交易的私钥和我们的帐户 地址(与私钥相同)进行实例化 。
推荐阅读
- 哪家月子中心好啊 坐月子哪家月子中心好
- 营业执照贷款能贷多少 营业执照贷款
- 房贷提前还款计算器在线 2021房贷提前还款计算器
- 多肉能放在卧室吗? 多肉放卧室可以吗
- 苹果和西红柿一起榨汁的功效 西红柿苹果可以一起吃吗?
- excel如何冻结多行多列 如何冻结多行多列
- c2驾照可以开多长的车子 C2驾照可以开多长的车?
- 平安银行房抵贷多久下款 平安银行房抵贷
- 西交利物浦大学学费标准 一年学费是多少
- 从剪辑手法 一个勺子亏了多少钱