使用动态参数

时间:2015-12-03 08:17:24

标签: c# unity3d

我从Unity项目调用可执行文件。可执行文件包含一个与计时器一起工作的函数(预定义时间,例如10秒)。我想要的是稍微更改一下功能,而不是运行一个计时器,作为.exe的输入,一个布尔标志,我将能够继续执行可执行文件或停止它。但是要这样做,我必须给.exe提供动态输入。有可能吗?如果可行的话,我怎么能这样做,而不需要花费太多的系统资源呢?

修改

void record(){

    string[] args = { path, dataDir, Date+"\\", name, surname };
    System.Diagnostics.Process.Start(execDir, String.Join(" ", args));  

}

OnGUI代码:

if (GUI.Button (new Rect (150,250, 100, 50), "RECORD")) {

    record();
}

if (GUI.Button (new Rect (270,250, 100, 50), "STOP")) {

        stop_recording();

}

此函数记录调用可执行文件,该文件将多个内容写入二进制文件。我还有一个停止按钮,我想在其中添加标志。当按下按钮时,标志将为true,我想将该值作为参数解析为execDir可执行文件。

1 个答案:

答案 0 :(得分:1)

我认为您要做的是将命令传递到正在运行的控制台应用程序,对吗?

首先,这一切都取决于您正在运行的可执行文件。如果可执行文件除了简单的" time_to_run"之外没有公开任何控件。命令行参数或每次运行时启动一个新实例,并且您没有此可执行文件的来源或无法编译它,您没有选项。但是,如果您有权访问这些资源或自己编写资源,您可以做很多事情。

应用程序允许以各种方式进行外部控制。

  1. 应用程序可以从流中读取控制信息(stdin,内存映射文件,命名管道等) - 如果您可以访问此可执行文件的源代码,则可以使其读取这些源中的任何一个并解析命令并执行它。
  2. 使用像named event这样的跨进程同步对象来停止/启动特定功能。这些事件的名称可以事先商定。
  3. 使控制台应用程序成为singleton。虽然这在技术上与2相同(仅允许其自身的一个实例)+ 1(将任何新命令传递给"旧"应用程序),但它允许简单使用而无需任何特殊编程。
  4. 使用.NET remoting
  5. 使用WCF
  6. 选择你! :)