繁体   English   中英

Unity3D - 与进程进行C#脚本通信(Ubuntu)

[英]Unity3D - C# script communication with a process (Ubuntu)

Hello stackoverflow社区

首先,对不起我有限的英语技能,但我尽力解释我的问题。

我的程序在Linux Ubuntu系统上运行。 没有以下代码行,它运行正常。 但我想开始一个新的终端,而且我必须加入一些参数(更改目录,启动模拟,配置参数等)。 正如您所看到的,我使用“echo”命令对其进行测试,但终端没有任何反应。 因此,我想问一下是否可以使用C#脚本和Unity3D将“字符串”作为Unix命令写入终端的标准输入。

当我执行我的项目时,会出现一个新的终端(Ubuntu),但在通常出现在游戏中的窗口中,只有一个白屏。

顺便说一下,代码在游戏对象的Start()方法中。

    Process myProcess = new Process();

    myProcess.StartInfo.FileName = "gnome-terminal";
    myProcess.StartInfo.UseShellExecute = false;
    myProcess.StartInfo.RedirectStandardInput = true;
    myProcess.StartInfo.RedirectStandardOutput = true;

    myProcess.Start();
    myProcess.WaitForExit();

    String inputText = "echo Test";
    myProcess.StandardInput.WriteLine(inputText);

当我执行它时看起来像这样

非常感谢你

问候

杰韦利

好的,所以我在这里看到2个问题,你可以改进/修复:

1.你应该隐藏终端窗口(或只是尝试)加入这一行:

myProcess.StartInfo.CreateNoWindow = true;

2.你应该删除阻塞部分myProcess.WaitForExit()因为它只会挂起你的Unity游戏,直到终端窗口关闭。

编辑

为确保一切正常,您应该:

myProcess.StandardInput.WriteLine("echo Test");
myProcess.StandardInput.Flush(); // to actauly send it

string echoValue = myProcess.StandardOutput.ReadLine();
Assert(echoValue == "Test");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM