【问题标题】:Unity3D - WebGL returning a variable from a web3 call into unity from jsUnity3D - WebGL 将 web3 调用中的变量返回到 js 中的统一
【发布时间】:2021-08-26 12:38:45
【问题描述】:

我遇到了一个问题,我有点羞于发布一些看起来很无聊的东西: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 作为那个有趣的结果。

最终我可以通过浏览器来控制台记录该功能,但我没有让任何东西恢复统一。很可能是因为这个变量需要一段时间才能使用,所以我想返回 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 进入浏览器。我如何将其发送回统一以更新其中的变量? 谢谢你的耐心:)

【问题讨论】:

    标签: javascript c# unity3d webgl


    【解决方案1】:

    已解决:将知识留给其他人:

    我在 c# 脚本中创建了一个新函数:

    public void MyFunction(string s) {
        ButtonText.text = s;
    }
    

    然后,我将.jslib 中的函数更改为发送避免返回,而是直接将值转发到统一实例:

    unityInstance.SendMessage('Text_Balance', 'MyFunction', "Variable I want to pass as argument in MyFunction");
    

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 2018-01-07
      • 2018-02-20
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 2019-08-15
      相关资源
      最近更新 更多