我正在尝试通过以下代码运行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;
答案 0 :(得分:0)
我的解决方案最终是在将Unity可执行文件作为进程启动时根本不使用嵌入式窗口标志。然后,我不需要在StartProcessInfo
对象中设置任何参数。
在Unity方面,我在初始场景中有一个脚本,可确保Unity应用程序没有Windows标题栏修饰。在该脚本的start
覆盖方法中,我有:
Screen.fullScreen = true;