По умолчанию СценаСцена содержит среду и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь Перезагрузка включена. Это означает, что когда вы входите в игровой режим, Unity уничтожает все существующие сцены GameObjectsфундаментальные объекты в сценах Unity, которые могут представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
Смотрите в Словарь и перезагружает Сцену с диска. Время, необходимое Unity для этого, увеличивается вместе со сложностью сцены, а это означает, что по мере того, как ваш проект становится более сложным, вам приходится дольше ждать между моментом нажатия кнопки «Воспроизвести» и моментом полной загрузки сцены в редакторе. .
При отключении перезагрузки сцены процесс занимает меньше времени. Это позволяет вам быстрее итерировать разработку вашего проекта. Вместо перезагрузки сцены с диска Unity только сбрасывает измененное содержимое сцены. Это позволяет избежать потери времени и производительности при выгрузке и перезагрузке сцены. Unity по-прежнему вызывает те же функции инициализации (например, OnEnable
, OnDisable
и OnDestroy
), как если бы он был только что загружен.
Последствия пропуска перезагрузки сцены
Чтобы отключить перезагрузку сцены:
- Выберите «Правка» > «Настройки проекта» > «Редактор».
- Убедитесь, что включен параметр "Войти в параметры игрового режима".
- Отключить повторную загрузку сцены
Дополнительную информацию см. в разделе Как настроить Play Mode
При отключении перезагрузки сцены время, необходимое для запуска приложения в редакторе, больше не соответствует времени запуска встроенной версии. Поэтому, если вы хотите точно отлаживать или профилировать то, что происходит во время запуска вашего проекта, вам следует включить перезагрузку сцены, чтобы более точно отображать истинное время загрузки и процессы, которые происходят во встроенной версии вашего приложения.
Отключение перезагрузки сцены должно иметь минимальные побочные эффекты для вашего проекта. Однако, поскольку перезагрузка сцены тесно связана с перезагрузкой домена, есть несколько важных отличий:
Поля ScriptableObject и MonoBehaviour, не сериализованные в сборке (
[NonSerialized]
, частные или внутренние), сохраняют свои значения. Это связано с тем, что Unity не воссоздает существующие объекты и не вызывает конструкторы. Кроме того, Unity преобразует пустые частные и внутренние поля типа массива/списка в пустой объект массива/списка во время перезагрузки домена и остается ненулевым во время выполнения (не в редакторе) скриптовКусок кода, позволяющий создавать собственные Компоненты, запускать игровые события, изменять свойства Компонентов с течением времени и реагировать на действия пользователя любым удобным для вас способом. Подробнее
См. в Словарь.Сценарии, использующие сценарии
ExecuteInEditMode
илиExecuteAlways
, не получаютOnDestroy
или вызовыAwake
. Unity не вызывает Awake, а вызывает OnEnable только тогда, когдаEditorApplication.isPlaying
уже имеет значение true при изменении режима воспроизведения с помощью методов Awake/OnEnable, которые проверяютEditorApplication свойство .isPlaying
. Несериализованные поля для сценариев времени выполнения (не редактора) не должны быть проблемой, поскольку они не активны в режиме редактирования, однако сценарии, отмеченныеExecuteInEditMode
илиExecuteAlways
может изменить себя или затронуть поля других сценариев времени выполнения. Чтобы обойти эту проблему, инициализируйте все затронутые поля в обратном вызове OnEnable самостоятельно.