UDP在UWP中对字符串进行sockect

时间:2018-05-16 13:30:56

标签: string sockets unity3d uwp

当我在UWP中编写代码时,我发现了一个奇怪的问题。

我使用UDP sockect将坐标发送到hololens。

坐标类似于“1.0_1.0_1.0”,它以字符串形式发送,将根据“_”进行剪切,然后坐标将用于控制球体的移动。

首先,它在统一编辑器中运行良好。

但是在hololens中,我只收到“1.0_1.0_1.0”,但无法将其更改为vector3:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HoloToolkit.Unity;

#if !UNITY_EDITOR
using System;
using Windows.Foundation;
#endif

public class pre : MonoBehaviour
{


public TextMesh tm = null;
public TextMesh tmmm = null;
public GameObject sphere;
string test;
public void ResponseToUDPPacket(string incomingIP, string incomingPort, string data)
{
    string[] centre = data.Split('_');
    float[] num= new float[3];
    if (tm != null)
          tm.text = data;


    num[0] = float.Parse(centre[0]);
    num[1] = float.Parse(centre[1]);
    num[2] = float.Parse(centre[2]);
    Debug.Log(num[1]);

    if (tmmm != null)
        tmmm.text = num[1].ToString();
    sphere.transform.position = new Vector3(num[0], num[1], num[2]);
    //var headPosition = Camera.main.transform.position;
   //headPosition.z = headPosition.z+10;
    //sphere1.transform.position = headPosition;
}
}

我使用两个testmesh来显示结果,“data”是我收到的字符串,第一个“tm”没有问题。例如,它将显示“1.0_1.0_1.0”。

但是根据num [1]获得的“tmm”永远不会起作用。

我认为这是UWP的问题。

BUT !!!!!!!!!!!!!!!!!!!!!!! 我通过c ++程序发送UDP字符串,但是当我使用软件(UDPsender或类似的东西)手动发送字符串时,hololens中的问题就消失了!

但我不认为我的C ++程序存在问题,因为至少它在Unity编辑器中运行良好。

有没有人知道这个问题?

1 个答案:

答案 0 :(得分:0)

也许你的模拟器和你的设备有不同的文化,一个人理解1.0而另一个人期望在float.Parse中有1.0个。

如果是这种情况,您可以将您的文化(或InvariantCulture)传递给float.Parse。

在所有情况下,Debug.Log(num [1])是否打印正确的数字?如果没有,这可以证实上述理论。