はじめに

ようやく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を解析してオブジェクトを動かす
        }
    }
}
動作確認

さいごに

それでは、今回はここまで。ありがとうございました😊