別のスレッドで UDP データを受信するためのメソッドを含むクラスがあります。これは、メイン アプリケーション (Unity3D で実行されている) が停止しないようにするためです。
別のスレッドで受信したデータを別のクラスに渡す必要があります。別のクラスは元のスレッドで実行されるため、Unity3D と対話できます。
UDPReceiver は大まかに次のようになります。
public class UDPReciever {
//...
public UDPReciever() {
m_Port = 12345;
m_Worker = new Thread(new ThreadStart(recvData));
m_Worker.IsBackground = true;
m_Worker.Start();
}
void recvData() {
m_UDPClient = new UdpClient(m_Port);
while (true) {
try {
IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0);
byte[] data = (m_UDPClient.Receive(ref anyIP));
// TODO: Hand 'data' to NetworkController class (running in the original thread) for processing
} catch (Exception err) {
print(err.ToString());
}
}
}
}
これはおおよそ、NetworkController クラスがどのように見える必要があるかです。理想的には、「OnNewData」メソッドは、引数として渡されたデータで新しいパケットが受信されるたびに呼び出されます。
public class NetworkController {
//...
void OnNewData(pData) {
// Process the data in this thread
}
}
これを達成するにはどうすればよいですか?前もって感謝します。