在 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。
有人知道在 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。