C# 在应用程序中将Unity作为嵌入式窗口运行时性能不佳
我试图通过以下代码运行Unity应用程序:C# 在应用程序中将Unity作为嵌入式窗口运行时性能不佳,c#,wpf,unity3d,windows-10,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)
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;
我的解决方案是在启动Unity可执行文件作为进程时,不使用嵌入式窗口标志。然后,我不需要在
StartProcessInfo
对象中设置任何参数
在Unity方面,我在初始场景中有一个脚本,确保Unity应用程序没有Windows标题栏装饰。在该脚本的start
override方法中,我有:
Screen.fullScreen = true;
我的解决方案是在启动Unity可执行文件作为进程时,不使用嵌入式窗口标志。然后,我不需要在
StartProcessInfo
对象中设置任何参数
在Unity方面,我在初始场景中有一个脚本,确保Unity应用程序没有Windows标题栏装饰。在该脚本的start
override方法中,我有:
Screen.fullScreen = true;
你试过打开探查器,看看是什么在吞噬你珍贵的框架吗?@Vakore这是我尝试的第一件事,不幸的是VS给了我一个启动探查器失败的错误。我必须尝试一个Windows性能工具。你尝试打开探查器,看看是什么侵蚀了你宝贵的帧?@Vakore这是我尝试的第一件事,不幸的是VS给了我一个启动探查器失败的错误。我必须尝试一种Windows性能工具