[英]Unity3D - WebGL returning a variable from a web3 call into unity from js
我正面臨一個問題,我有點羞恥地發布了一些看起來很菜的東西 :D
上下文:我正在用 Unity 為 WebGL 做一個小項目,我正在努力從函數返回一個變量。
我在 Unity 中運行那個簡單的腳本來調用我在 .jslib 文件中的函數。
[DllImport("__Internal")] private static extern string GetBalance(string s);
public void Start() {
string s = WalletAddress();
ButtonText.text = GetTokenBal(s);
}
這就是我正在調用的函數,我想因為這種樂趣而返回 Balance。
最終我可以通過瀏覽器控制台.log 該功能,但我沒有得到任何恢復統一。 很可能是因為這個變量需要一段時間才能使用,所以我想回到 Start() 這不是一個正確的方法。 我猜
web3 = new Web3(new Web3.providers.HttpProvider("xxxx"));
GetBalance: function (str) {
var addr = (Pointer_stringify(str));
var contractAddr = ('xxxx');
var tknAddress = (addr).substring(2);
var balance = 0;
var contractData = ('0x70a08231000000000000000000000000' + tknAddress);
web3.eth.call({
to: contractAddr,
data: contractData
}, function(err, result) {
if (result) {
var tokens = web3.utils.toBN(result).toString();
console.log('Tokens Owned: ' + web3.utils.fromWei(tokens, 'kwei'));
balance = web3.utils.fromWei(tokens, 'kwei');
} else {
console.log(err);
}
});
return balance;
}
很抱歉問一個簡單的問題,但我正在學習,所以我想念拼圖的一部分。
如果這個變量當時可用,我可以使用 console.log 登錄瀏覽器。 我如何將它發送回 unity 以更新那里的變量? 謝謝你的耐心:)
已解決:將這些知識留給其他人:
我在我的c#
腳本中創建了一個新函數:
public void MyFunction(string s) {
ButtonText.text = s;
}
然后,我將.jslib
的函數更改為發送避免返回,而是直接將值轉發到統一實例:
unityInstance.SendMessage('Text_Balance', 'MyFunction', "Variable I want to pass as argument in MyFunction");
如何將 web3 庫導入到您的項目中?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.