Низкая производительность при запуске Unity как встроенного окна в приложении - PullRequest
1 голос
/ 16 марта 2019

Я пытаюсь запустить приложение 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 голосов
/ 19 марта 2019

Мое решение закончилось тем, что я просто не использовал флаг встроенного окна при запуске исполняемого файла Unity как процесса. Тогда мне не нужно было устанавливать аргументы в объекте StartProcessInfo.

Что касается Unity, у меня есть сценарий, который находится в начальной сцене, который гарантирует, что приложение Unity не имеет декорации строки заголовка Windows. В методе переопределения start этого сценария у меня есть:

Screen.fullScreen = true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...