一文读懂如何将Unity Engine + MetaMask钱包连接起来
Unity游戏自动连接Metamask钱包(或任何web3钱包)的操作。
在本文中,您将涉及到的内容:
1. 创建一个web3 WebGL模板
2. 更改web3模板的player设置
3. 将您的Unity游戏与MetaMask连接
4. 在游戏中显示MetaMask地址。
Web3 WebGL模板
创建新项目
在项目的“Assets”下,创建一个名为WebGLTemplates的文件夹。
接下来,下载现有的WebGL模板或使用下面的模板。有关更多信息,请参见《 Unity手册》。将模板移至WebGLTemplates
最终结果应该是:
有两个设置:
1、在Web3Template内部的index.html中,我们正在导入脚本
2、在TemplateData / web3Connect.js下,脚本为if (window.ethereum) { web3 = new Web3(window.ethereum); // connect popup ethereum.enable();} else { alert("Non-Ethereum browser detected. Please connect to a wallet");}简而言之,此模板说:加载网页后,连接到Web3钱包。更改player设置更改播放器设置在您的Unity项目中,File > Build Settings...Switch Platform到WebGL,完成后转到player设置...将WebGL模板更改为我们之前添加的Web3Template。要测试MetaMask连接,Build and Run应该有一个连接提示在游戏中显示地址现在它已经连接好了,让我们利用这些数据。这个例子将显示游戏中的web3钱包地址。Right Click > UI > Button选择Button并Add Component。创建一个新脚本。在此示例中,脚本称为GetWalletAddress.cs粘贴代码获取walletaddress.cs// GetWalletAddress.csusing System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;// use web3.jslibusing System.Runtime.InteropServices;public class GetWalletAddress : MonoBehaviour{ // text in the button public Text ButtonText; // use WalletAddress function from web3.jslib [DllImport("__Internal")] private static extern string WalletAddress(); public void OnClick() { // get wallet address and display it on the button ButtonText.text = WalletAddress(); }}创建另一个名为web3.jslib的文件。将代码粘贴到web3.jslib中。// web3.jslibmergeInto(LibraryManager.library, { WalletAddress: function () { // get address from metamask var returnStr = web3.currentProvider.selectedAddress; var bufferSize = lengthBytesUTF8(returnStr) + 1; var buffer = _malloc(bufferSize); stringToUTF8(returnStr, buffer, bufferSize); return buffer; },});现在代码已完成,将所有内容连接在一起。将Button对象拖到On Click()处理函数中,然后选择我们创建的OnClick()函数。将Text拖到“Button Text”脚本中。要进行验证,请再次构建并运行一次。单击按钮应显示一个地址这将为更复杂的交互(例如获取ERC-721数据以显示游戏内物品)奠定基础。---------------------------------------------原文作者:Leon Do译者:链三丰译文出处:http://bitoken.world---------------------------------------------描下放二维码添加我,拉您进入技术交流群" _ue_custom_node_="true">
Scan QR code with WeChat