我正在使用 '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] 删除。
我来说两句