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

时间:2016-12-05 11:16:16

标签: c# linux ubuntu unity3d

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);

执行时看起来像this

非常感谢

此致

杰韦利

1 个答案:

答案 0 :(得分:0)

好的,所以我在这里看到了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");