我有两个不同的可执行文件在同一台运行Windows OS的计算机上运行.它们都是在Unity中构建的.我想在不使用网络的情况下将消息从一个发送到另一个.
如何从exe程序向Unity中的另一个exe程序发送消息?
这是可能的integrated Mono/.net functionality或其他什么?  
我目前正在为编辑人员开发一个简单的原型。编辑器将使用WinForms(或WPF,如果可能的话)提供主用户界面,还将嵌入Unity 2017独立应用程序以可视化数据并提供其他控制元素(例如,缩放,旋转,滚动等)。
感谢下面的这篇不错的文章,使嵌入式Unity应用程序在WinForms应用程序中运行非常容易。
https://forum.unity.com/threads/unity-3d-within-windows-application-enviroment.236213/
另外,还有一个简单的示例应用程序,您可以在此处访问:
不幸的是,该示例或我找不到的任何帖子都没有回答一个非常基本的问题:如何从嵌入式Unity应用程序中的WinForms应用程序传递数据(或调用方法)(反之亦然)?
WinForms应用程序是否可以在Unity应用程序中简单地调用MonoBehaviour脚本或静态方法?如果是这样,怎么办?如果没有,什么是一个好的解决方法?作为回报,Unity-to-WinForms通信又将如何工作?
更新:
使用程序员(link)提到的重复页面来实现一个解决方案,该解决方案使用命名管道在WinForms和Unity应用程序之间进行通信。
这两个应用程序都使用BackgroundWorkers,WinForms-应用程序充当服务器(因为它首先启动,并且在启动客户端之前需要活动的连接侦听器),而嵌入式Unity-应用程序充当客户端。
不幸的是,Unity应用程序在创建NamedPipeClientStream时抛出NotImplementedException,指出“ Mono不支持ACL”(已在Unity 2017.3和Net 2.0(未测试Net 2.0子集)中进行了测试)。上面提到的帖子中已经在一些评论中报告了此异常,但是尚不清楚(如果已解决)。已经尝试了建议的解决方案“确保在客户端尝试连接之前服务器已启动并正在运行”和“以管理员模式启动它”,但到目前为止仍失败。
解:
经过更多测试后,很明显“ Mono不支持ACL”异常是由在创建NamedPipeClientStream-instance时使用的TokenImpersonationLevel-parameter引起的。将其更改为TokenImpersonationLevel。没有解决此问题。
这里是WinForms应用程序使用的代码,该应用程序充当命名管道服务器。确保在Unity应用程序客户端尝试连接之前,该脚本已执行!另外,在启动服务器之前,请确保已构建并发布了Unity应用程序。将您的Unity应用程序的Unity可执行文件放置在WinForms-applications文件夹中,并将其命名为“ Child.exe”。
using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO.Pipes;
namespace Container
{
    public partial class MainForm : Form
    {
        [DllImport("User32.dll")]
        static extern bool MoveWindow(IntPtr handle, int x, int y, int width, int height, bool redraw);
        internal delegate int WindowEnumProc(IntPtr hwnd, IntPtr lparam);
        [DllImport("user32.dll")]
        internal static extern bool EnumChildWindows(IntPtr hwnd, …Run Code Online (Sandbox Code Playgroud)