Wie zu verwenden UDP mit Unity Methoden
Ich erstellt ein Würfel-Objekt und befestigt dieses Skript.
using UnityEngine;
using System.Collections;
public class CubeMove : MonoBehaviour {
void Start () {
}
void Update () {
}
public void Move () {
Vector3 moveVector = new Vector3(10, 0, 0);
transform.Translate(moveVector);
}
}
Wollte ich mit UDP zu Steuern Würfel zu bewegen, so habe ich UDPManager.
using UnityEngine;
using System.Collections;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
public class UDPManager : MonoBehaviour
{
static UdpClient udp;
Thread thread;
public GameObject cube;
public CubeMove cubemove;
void Start ()
{
udp = new UdpClient(12345);
cubemove = cube.GetComponent<CubeMove>();
thread = new Thread(new ThreadStart(ThreadMethod));
thread.Start();
}
void Update ()
{
}
void OnApplicationQuit()
{
udp.Close();
thread.Abort();
}
private void ThreadMethod()
{
while(true)
{
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
byte[] receiveBytes = udp.Receive(ref RemoteIpEndPoint);
string returnData = Encoding.ASCII.GetString(receiveBytes);
Debug.Log(returnData);
if (returnData == "1\n") {
cube.SendMessage ("Move");
//or
cubemove.Move();
}
}
}
}
aber diese funktioniert nicht mit unter Fehler.
- SendMessage can only be called from the main thread.
- get_transform can only be called from the main thread.
Kann ich anrufen unity Methoden, wenn ich udp-Befehl?
keine der Antworten für mich gearbeitet, aber die beiden Skripte hier hast: forum.unity.com/threads/...
InformationsquelleAutor uzimith | 2016-05-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht anrufen Unity-API aus einem anderen Thread. Wie zu verwenden-Gewinde in der Einheit:
1. Start Thread
2. Prozess Input in diesem neuen thread
3. Sagen Einheit, dass Sie fertig sind Verarbeitung. Sie können dies durch die Einrichtung einer weltweiten
boolean
variabletrue
. Speichernoutput
Daten in einem anderen globalen variable.4. Überprüfen Sie, ob die
boolean
variable verändertUpdate()
Funktion. Legen Sie esfalse
wenn Sie es Tat. Prozess Ausgabe...Bewegen
udp = new UdpClient(12345);
von derStart
- Funktion, um dieThreadMethod
Funktion.InformationsquelleAutor Programmer
InformationsquelleAutor ᑌᑎᑌᑎᑌᑎᑌᑎᑌᑎ