在 Unity 中无法将字符串从 JsonObject 转换为浮动

威尔·约翰

我正在使用 'Socket.IO for Unity' 插件并使用 JSONObject 将数据发送到服务器,但我无法从字符串转换为浮点数。

使用:

Debug.Log(e.data.GetField("vertical").ToString());

正确地将字符串返回给我 "0,978"

但是 'float.Parse' 可以处理除 JsonObject 之外的任何字符串,例如采用上面的 JsonObject 字符串并使用 float.Parse:

float.Parse (e.data.GetField("vertical").ToString())

只需在没有任何控制台错误的情况下中断其余代码,游戏就会完美地进行,但不会返回浮点数!可能会发生什么?有没有人有任何想法?

我的代码:

public void PlayerAnim(SocketIOEvent e){
    if(e.data.GetField("id").ToString () == id){
        anim.SetFloat ("IsRunning", Mathf.Abs (float.Parse (e.data.GetField("vertical").ToString()) + Mathf.Abs (float.Parse (e.data.GetField("horizontal").ToString()))));
    }
}
塞缪尔·戈登鲍姆

您需要使用 JSONObject 扩展。有一个f扩展可以为您提取浮点数。

服务器:

socket.emit('hello', {float: 0.978});

统一:

socket.On ("hello", (message) => {
   var myValue = message.data.GetField("float").f; 
   // or var myValue = message.data["float"].f;
});

资产真的很旧,使用默认JSONObject存在问题,因为我记得它会在序列化/解析过程中吞下错误。值得查看更定期更新最佳 HTTP 2资产。

但是,即使进行了额外的转换,您的代码也可能会工作,并且会设置断点并简单地评估float.Parse (e.data.GetField("vertical").ToString())语句以确保。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章