Это, вероятно, потому, что Unity выполняет только PlayMode (Update
события и т. Д.), В то время как окно UnityEditor и, в частности, Game view
сфокусировано. Если другое окно имеет или получает фокус в момент получения вашего сообщения, Unity останавливается до тех пор, пока Game view
редактора единиц не снова фокусируется.
Вы можете это исправить, перейдя в Настройки игрока & rightarrow; Resolution and Presentation
& rightarrow; Resolution
и включить опция
Запуск в фоновом режиме
Включите эту опцию, чтобы игра продолжала работать (а не приостанавливалась), если приложение теряет фокус.
Очевидно, это также относится и к игроку в самом UnityEditor.
Однако он работает / существует только в том случае, если целью вашего проекта является «Автономный» или «Интернет».
Для iOS и Android это не работает, потому что на этих устройствах приложение не может работать в фоновом режиме. Unity автоматически также применяет то же поведение к игроку внутри самого UnityEditor.
Но вы все равно можете обойти его настройкой Application.runInBackground
(что в принципе и делает упомянутый выше вариант)
Должен ли проигрыватель работать, когда приложение находится в фоновом режиме?
По умолчанию false
(приложение останавливается, когда оно находится в фоновом режиме).
непосредственно из компонента (прикрепленного к любому игровому объекту Scene), например
public class EditorRunInBackground : MonoBehaviour
{
private void Awake ()
{
if (Application.isEditor) Application.runInBackground = true;
}
}
, который устанавливает runInBackground
только для самого UnityEditor.
В качестве альтернативы, если вы не хотите прикреплять его к чему-либо, вы также можете использовать скрипт с [RuntimeInitializeOnLoadMethod]
public static class EditorRunInBackground
{
[RuntimeInitializeOnLoadMethod]
private static void OnRuntimeMethodLoad()
{
if(Application.isEditor) Application.runInBackground = true;
}
}
и может даже воспроизводить его в папке Editor
, поэтому его удаляют в сборке.