在应用程序中将Unity作为嵌入式窗口运行时性能不佳

时间:2019-03-15 21:23:04

标签: c# wpf unity3d windows-10

我正在尝试通过以下代码运行Unity应用程序:

IntPtr parentHandle = Process.GetCurrentProcess().MainWindowHandle;
ProcessStartInfo procInfo = new ProcessStartInfo(_pathToUnityExe);
Logging.Log_Critical.Send("Starting process at " + _pathToUnityExe);

if (_useEmbeddedWindow)
{
    procInfo.Arguments = "-parentHWND " + parentHandle + " " + Environment.CommandLine;
    procInfo.UseShellExecute = true;
    procInfo.CreateNoWindow = true;
}

_externalAppProcess = Process.Start(procInfo);

我一直注意到,父WPF应用程序方面的性能有些欠佳,即响应速度不佳以及动画和媒体出现问题。无论Unity应用正在加载复杂的场景还是完全空白的场景,这种情况似乎都会发生。

由于Unity应用程序是通过一个进程启动的,所以我不认为会出现线程/阻塞问题,但是我不确定除非Unity中存在此问题,否则还有什么可能。

有人对此有想法或经验吗?

如果需要,我也可以采用其他方法,主要是我需要能够控制Unity窗口的大小和位置。我主要怀疑-parentHWND参数会导致Unity方面的行为异常。

但是,这段代码似乎并没有单独删除窗口标题栏,有没有办法在不使用-parentHWND参数的情况下做到这一点?

procInfo.CreateNoWindow = true;

1 个答案:

答案 0 :(得分:0)

我的解决方案最终是在将Unity可执行文件作为进程启动时根本不使用嵌入式窗口标志。然后,我不需要在StartProcessInfo对象中设置任何参数。

在Unity方面,我在初始场景中有一个脚本,可确保Unity应用程序没有Windows标题栏修饰。在该脚本的start覆盖方法中,我有:

Screen.fullScreen = true;