はじめに
ようやくUnityとUDP通信で接続するところまでできたので、その方法を共有します☺️
Unityとの接続にあたって、前回からいくつか変更点があります。
- 画像表示をUDP送信に変更
- ランドマークのコールバックでは、受信データをキューに格納するのみ
- 別スレッドでキューからデータを取り出し、UDP送信する
Python(UDP送信側)
from socket import socket, AF_INET, SOCK_DGRAM
import json
ADDRESS = "127.0.0.1"
PORT = 65500
def udp_send(json_data):
with socket(AF_INET, SOCK_DGRAM) as s:
s.sendto(json_data.encode('utf-8'), (ADDRESS, PORT))
Unity(UDP受信側)
using System.Net;
using System.Net.Sockets;
using System.Threading;
using UnityEngine;
public class UDPReceiver : MonoBehaviour
{
UdpClient udp;
Thread receiveThread;
void Start()
{
udp = new UdpClient(65500);
receiveThread = new Thread(Receive);
receiveThread.IsBackground = true;
receiveThread.Start();
}
void Receive()
{
while (true)
{
var ep = new IPEndPoint(IPAddress.Any, 0);
var data = udp.Receive(ref ep);
string json = System.Text.Encoding.UTF8.GetString(data);
// JSONを解析してオブジェクトを動かす
}
}
}
さいごに
それでは、今回はここまで。ありがとうございました😊