Python发送数据到Unity实现
2023-12-24 20:29:23
Unity设置:
- 打开Unity项目。
- 创建一个空的GameObject,并附加一个新的脚本
TCPReceiver
? -
using System.Net; using System.Net.Sockets; using System.Text; using UnityEngine; using System.Threading; public class MyListener : MonoBehaviour { Thread thread; public int connectionPort = 25001; TcpListener server; TcpClient client; bool running; void Start() { // Receive on a separate thread so Unity doesn't freeze waiting for data ThreadStart ts = new ThreadStart(GetData); thread = new Thread(ts); thread.Start(); } void GetData() { // Create the server server = new TcpListener(IPAddress.Any, connectionPort); server.Start(); // Create a client to get the data stream client = server.AcceptTcpClient(); // Start listening running = true; while (running) { Connection(); } server.Stop(); } void Connection() { // Read data from the network stream NetworkStream nwStream = client.GetStream(); byte[] buffer = new byte[client.ReceiveBufferSize]; int bytesRead = nwStream.Read(buffer, 0, client.ReceiveBufferSize); // Decode the bytes into a string string dataReceived = Encoding.UTF8.GetString(buffer, 0, bytesRead); // Make sure we're not getting an empty string //dataReceived.Trim(); if (dataReceived != null && dataReceived != "") { // Convert the received string of data to the format we are using position = ParseData(dataReceived); nwStream.Write(buffer, 0, bytesRead); } } // Use-case specific function, need to re-write this to interpret whatever data is being sent public static Vector3 ParseData(string dataString) { Debug.Log(dataString); // Remove the parentheses if (dataString.StartsWith("(") && dataString.EndsWith(")")) { dataString = dataString.Substring(1, dataString.Length - 2); } // Split the elements into an array string[] stringArray = dataString.Split(','); // Store as a Vector3 Vector3 result = new Vector3( float.Parse(stringArray[0]), float.Parse(stringArray[1]), float.Parse(stringArray[2])); return result; } // Position is the data being received in this example Vector3 position = Vector3.zero; void Update() { // Set this object's position in the scene according to the position received transform.position = position; } }
Python设置:
- 如果尚未安装
socket
库,安装(pip install socket
) - 创建一个Python脚本
send_data.py
?import socket host, port = "127.0.0.1", 25001 data = "1,2,3" # SOCK_STREAM means TCP socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: # Connect to the server and send the data sock.connect((host, port)) sock.sendall(data.encode("utf-8")) response = sock.recv(1024).decode("utf-8") print (response) finally: sock.close()
文章来源:https://blog.csdn.net/xdpcxq1029/article/details/135185824
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!