#unity3d #unity-editor
#unity3d #unity-редактор
Вопрос:
В настоящее время я разрабатываю какой-то проект Unity (это мой первый, я не знаком с Unity), и меня беспокоит то, что точки останова все еще срабатывают, когда я сворачиваю окно редактора Unity, хотя у меня есть Application.runInBackground == false
, поэтому приложение должно быть приостановлено в фоновом режиме, но это не так! Только пользовательский интерфейс зависает, а музыка останавливается, пока фактический код продолжает выполняться. Итак, мне в основном интересно, является ли это общим поведением или это происходит только тогда, когда вы работаете в редакторе, чтобы разрешить отладку, а в выпуске останавливается выполнение кода сборки?
Комментарии:
1. Добро пожаловать, новый пользователь — я не совсем уверен , какой эффект вы имеете в виду, но да, к сожалению, такие вещи не работают так, как вы ожидаете в редакторе . попробуйте сборку на рабочем столе?
2.
Only the UI gets frozen and music stops
.. вы имеете в виду, что вы нажимаете точки останова из разных потоков / асинхронных задач? Вы не можете избежать продолжения их работы! runInBackground влияет только на «основной» поток Unity.3. Точка останова @derHugo, установленная в
Update()
унаследованном отMonoBehaviour
, все еще срабатывает, когда приложение свернуто, и я почти уверен, чтоUpdate()
это вызывается в «основном» потоке4. Итак, чтобы убедиться, что вы сворачиваете и фактически нажимаете на другую программу на своем рабочем столе?
5. @derHugo Я нажимаю на Visual Studio, я думаю, на самом деле не имеет значения, сворачиваете ли вы приложение или нажимаете на другое, поскольку в обоих случаях редактор unity теряет фокус. Итак, я в основном запускаю приложение, затем переключаюсь на VS (когда я переключаюсь на VS, пользовательский интерфейс зависает и музыка останавливается), затем я устанавливаю точку останова,
Update()
и она htis
Ответ №1:
У меня были похожие проблемы. Я обнаружил, что это связано с тем, что у меня есть IDE, подключенная к Unity, и только тогда это произошло. Когда вы переключаетесь в режим выпуска, все идет так, как и должно — режим отладки в Unity.
Ответ №2:
Вы пытались изменить его в редакторе? перейдите в меню Правка -> Настройки проекта -> Проигрыватель. Теперь панель инспектора изменится, чтобы отобразить настройки проигрывателя. Найдите опцию с надписью «Запуск в фоновом режиме» и снимите с нее флажок. Из того, что я понимаю Application.runInBackground == false
, больше приостанавливает его, чем останавливает выполнение скрипта. Если ваш проект предназначен для мобильных устройств (или, может быть, просто добавьте это в любом случае, это может помочь), попробуйте:
RuninBackgorund игнорируется для Android и IOS, как вы можете видеть здесь
Единственный и эффективный способ запуска в фоновом режиме на Android — через сервис. Вы можете использовать метод OnApplicationPause, чтобы получать уведомления, когда игра приостанавливается / распаковывается.
public void OnApplicationPause(bool paused) {
if(paused) {
// Game is paused, stop service notifications.
} else {
// Game is unpaused, start service to get notifications
}
Здесь у вас есть хороший учебник по взаимодействию между Android и Unity