gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:29 26 4
gpt4 key购买 nike

你好 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

非常感谢

问候

发展

最佳答案

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

关于c# - Unity3D - C# 脚本与进程通信 (Ubuntu),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40972987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com