在 Unity 的后台启动应用程序

Starting an application in the background in Unity

有人知道在 Unity 中按下按钮时如何在后台启动应用程序(使用 C#)吗?我到处找,但我只能找到 Process.Start() 执行外部应用程序的方法。不幸的是,这将焦点转向它,这是我不想要的。

提前致谢!

您使用

Application.runInBackground = true;

让您的应用程序 运行 在后台运行。将其设置为 false 使其不在后台 运行。

Application.runInBackground = false;

如果您在 Unity 应用程序中按下按钮,您将失去当前应用程序的焦点。

但是, 1) 您可以使用 PackageManager API 执行其他 android 应用程序。 (Unity可以调用android的api使用AndroidJavaClass)

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.package.address");
startActivity(launchIntent);

2) 执行后,您可以在当前任务堆栈应用之间重新排序。

Intent i = new Intent(this, MyMainActivity.class);
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);

所以,我想你可以尝试一些技巧。
A可以执行B,然后B立即将焦点还给A。(有些闪烁)
或者A执行B,然后A可以在后台从B收回它的焦点。

如果您调用 process.StandardOutput.ReadToEnd(),那么您可能需要切换到 BeginOutputReadLine and OutputDataReceived,以便 Unity 在从您的进程读取输出时不会阻塞。

进行更改并使用 StartInfo.CreateNoWindow = true 让我能够专注于 Unity。