UDP sockect о строке в UWP - PullRequest
0 голосов
/ 16 мая 2018

Я нахожу странную проблему, когда пишу код в UWP.

Я использую протокол sockect UDP для отправки координат гололинсу.

Координата похожа на "1.0_1.0_1.0", он был отправлен в виде строки и будет обрезан в соответствии с «_», затем координата будет использоваться для управления перемещением сферы.

Прежде всего, все работает правильно в редакторе единиц.

Но в гололенах, например, я получаю только "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;
}
}

Я использую две тестовые сетки, чтобы показать результат,«data» - это строка, которую я получил, первая «tm» не имеет проблем. Например, она будет показывать «1.0_1.0_1.0».

Но «tmm», которая получаетсясогласно num [1] никогда не работает.

Я думал, что это проблема UWP.

НО !!!!!!!!!!!!!!!!!!!!!!!Я отправляю строку UDP программой на c ++, но когда я использую программное обеспечение (UDPsender или что-то подобное) для отправки строки вручную, проблема в гололинсе исчезла!

Но я не думаю, что есть проблемав моей C ++ программе, потому что, по крайней мере, он хорошо работает в редакторе Unity.

Есть ли у кого-нибудь представление о проблеме?

1 Ответ

0 голосов
/ 16 мая 2018

Возможно, ваш эмулятор и ваше устройство имеют разные культуры, и один понимает 1,0, а другой ожидает 1,0 в float.Parse.

Вы можете передать свою культуру (или InvariantCulture) float.Parse, если это так.

Печатает ли Debug.Log (num [1]) правильное число во всех случаях? Если нет, то это может подтвердить приведенную выше теорию.

...