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
非常感谢
此致
杰韦利
答案 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");