unity生成的exe接收winform进程发过来的数据
时间: 2023-08-16 17:07:35 浏览: 219
Winform内嵌Unity
在 Unity 中生成的 exe 可以通过使用 .NET Framework 的进程间通信机制来接收来自 WinForm 进程的数据。其中一个常用的方法是使用命名管道(Named Pipes)来进行通信。
以下是一个简单的例子,演示了如何在 Unity 中创建一个名为“UnityPipe”的命名管道,并等待来自 WinForm 进程的消息:
```csharp
using System;
using System.IO;
using System.IO.Pipes;
using System.Text;
using UnityEngine;
public class PipeServer : MonoBehaviour
{
private NamedPipeServerStream _pipeServer;
private void Start()
{
// 创建命名管道
_pipeServer = new NamedPipeServerStream("UnityPipe");
// 等待 WinForm 进程连接
_pipeServer.WaitForConnection();
Debug.Log("WinForm 进程已连接");
// 读取来自 WinForm 进程的消息
var reader = new StreamReader(_pipeServer);
var message = reader.ReadLine();
Debug.Log($"收到消息:{message}");
// 关闭命名管道
_pipeServer.Close();
}
}
```
在 WinForm 进程中,可以使用以下代码向“UnityPipe”命名管道发送消息:
```csharp
using System.IO.Pipes;
using System.Text;
var pipeClient = new NamedPipeClientStream(".", "UnityPipe", PipeDirection.Out);
pipeClient.Connect();
var writer = new StreamWriter(pipeClient);
writer.WriteLine("Hello, Unity!");
writer.Flush();
pipeClient.Close();
```
通过这种方式,Unity 中生成的 exe 就可以与 WinForm 进程进行通信,并接收来自 WinForm 进程的数据了。注意,在使用命名管道进行通信时,需要确保 Unity 中的命名管道名称和 WinForm 中的命名管道名称是一致的。
阅读全文