Unity 6.3
0 онлайн 106 гостей 3 в системе
Вход
Обновление Unity Шаг 4 из 11

Обновление до Unity 6.3

На этой странице перечислены изменения в Unity 6.3 (6000.3), которые могут повлиять на существующие проекты при обновлении их с Unity 6.2 (6000.2) до Unity 6.3 (6000.3).

Обзор изменений для Unity 6.3 в этих областях:

Доступность

В этом разделе описываются последние обновления доступности APIs, которые могут повлиять на процесс обновления.

Преобразование перечисления AccessibilityRole

AccessibilityRole преобразовано из флагового перечисления в обычное. Такое преобразование делает поведение API согласованным и предсказуемым на всех платформах, поддерживаемых API программ чтения с экрана: Android, iOS, Windows и macOS. Существующий код, который комбинирует роли или выполняет побитовые операции над значениями этого перечисления, может вызывать предупреждения компилятора и приводить к неверным объявлениям или поведению программы чтения с экрана.

Для устранения этих предупреждений и обеспечения предполагаемого поведения экранного читателя в обновленном проекте убедитесь, что установлен только один AccessibilityRole для AccessibilityNode.role и уберите все побитовые операции над значениями этого перечисления.

AccessibilityRole и AccessibilityState изменение типа

Основной тип AccessibilityRole и AccessibilityState переписи изменился с int до byte для уменьшения памяти AccessibilityNode Любой код, который зависит от размера этих энумов или размера типов с полями этих энумов (например, системы сериализации), или любой предкомпилированный код, созданный против старого int-определения перечислений будут выбрасывать исключения или приводить к неожиданному поведению.

Чтобы решить эти проблемы в вашем обновленном проекте Unity, перекомпилируйте любой код, построенный против старого int-определения перечислений и убедитесь, что весь код, зависящий от размера этих перечислений, корректно обрабатывает их новый размер.

AccessibilityNode.selected устаревание

AccessibilityNode.selected был переименован в AccessibilityNode.invoked. AccessibilityNode.selected теперь устарел. Если вы не обновляете устаревший APIs автоматически при обновлении проекта, он все еще может компилироваться. Однако AccessibilityNode.selected будет устаревать в будущем выпуске.

Наследие

Чтобы обеспечить эффективную монетизацию и избежать потенциальных блокаторов обновлений, перейдите на пакет Ads Mediation (Unity LevelPlay), который является поддерживаемым решением по умолчанию для интеграции рекламы в Unity. Дополнительные сведения см. в руководствах по интеграции Unity LevelPlay.

Рекламодателям рекомендуется обновить Unity Ads SDK непосредственно до версии 4.16.4.

Редактор и рабочий процесс

В этом разделе описываются последние обновления Unity Editor и общие рабочие процессы, которые могут повлиять на процесс обновления.

Удаление менеджера индекса поиска

Менеджер поисковых индексов (Windows > Поиск > Менеджер индексов) удален. Если вы хотите настроить индексацию поиска, перейдите в Настройки > Поиск > Индексация.

В окне Настройки индексации теперь есть два варианта индексации:

  • Индексировать при запуске Редактора: При включении, индексирование начинается автоматически в фоновых процессах AssetWorker сразу после запуска Редактора. При отключении, индексирование происходит только при первом использовании поискового API или инструмента. Эта опция включена по умолчанию.
  • Индексация глубоких сцен и префаб: Индексирует полное содержимое сцен и префабы. Этот процесс занимает больше времени, чем обычная индексация. По умолчанию эта опция отключена.

Объекты

В этом разделе описываются последние обновления субъектов, которые могут повлиять на процесс обновления.

Изменения типа пространства имен UnityEngine.Experimental.GlobalIllumination

Тип следующих полей изменился с int на EntityId:

  • UnityEngine.Experimental.GlobalIllumination.Cookie.instanceID
  • UnityEngine.Experimental.GlobalIllumination.DirectionalLight.instanceID
  • UnityEngine.Experimental.GlobalIllumination.DiscLight.instanceID
  • UnityEngine.Experimental.GlobalIllumination.LightDataGI.cookieID
  • UnityEngine.Experimental.GlobalIllumination.LightDataGI.instanceID
  • UnityEngine.Experimental.GlobalIllumination.PointLight.instanceID
  • UnityEngine.Experimental.GlobalIllumination.RectangleLight.instanceID
  • UnityEngine.Experimental.GlobalIllumination.SpotLightBoxShape.instanceID
  • UnityEngine.Experimental.GlobalIllumination.SpotLightPyramidShape.instanceID

За исключением cookieID, поля также были переименованы в entityID. Первоначальное instanceID сохранено как свойство forwarding для обратной совместимости.

Тип EntityId имплицитно конвертируем к и от int, так что скрипты C# будут продолжать работать без изменений.

Однако, если в вашем проекте имеется предкомпилированная сборка (.dll), которая использует любое из этих полей, вы можете столкнуться с ошибками MissingFieldException от этой сборки. Чтобы устранить эти ошибки, перекомпилируйте сборку с использованием последней версии UnityEngine.dll. Изменения исходного кода не требуются. Если сборка является сторонней и у вас нет доступа к исходному коду, свяжитесь с поставщиком для обновленной сборки, предназначенной для последней версии Unity.

Scene.handle изменение типа

Тип UnityEngine.SceneManagement.Scene.handle изменился с int на SceneHandle.

Если вы используете Scene.handle в своем коде, тип SceneHandle имплицитно преобразуется в intи обратно, так что скрипты C# будут продолжать работать без изменений.

Однако, если в вашем проекте имеется предкомпилированная сборка (.dll), которая использует любое из этих полей, вы можете столкнуться с ошибками MissingFieldException от этой сборки. Чтобы устранить эти ошибки, перекомпилируйте сборку с использованием последней версии UnityEngine.dll. Изменения исходного кода не требуются. Если сборка является сторонней и у вас нет доступа к исходному коду, свяжитесь с поставщиком для обновленной сборки, предназначенной для последней версии Unity.

Графика

В этом разделе описываются последние обновления графических систем Unity, которые могут повлиять на процесс обновления.

URP Удаление режима совместимости

Universal Render Pipeline Режим совместимости был устаревшим в Unity 6.0 и теперь удален. Код по умолчанию удален, чтобы сократить время компиляции и уменьшить размер сборки.

Свойство RenderGraphSettings.enableRenderCompatibilityMode теперь доступно только для чтения (возвращает false). Если вы по-прежнему используете режим совместимости, сначала преобразуйте свой проект в URP Render Graph и используйте Unity 6.0, 6.1, или 6.2. Загрузка проекта в режиме совместимости не рекомендуется и не поддерживается.

Вы можете использовать символ определения скрипта URP_COMPATIBILITY_MODE в настройках Проигрывателя, чтобы добавить Режим Совместимости обратно в код. Используйте это только для конвертирования проекта. Это определение скрипта больше не будет работать в Unity 6.4.

Удаление устаревшего компрессора ETC

Режим сжатия Legacy ETC теперь удален. Проекты, использующие Legacy ETC сжатие, будут автоматически обновлены для использования конфигурации компрессора по умолчанию ETC.

Компрессоры, используемые в этой конфигурации, обычно имеют более высокое качество кодирования. Это означает, что сжатые текстуры могут не быть пиксельно идентичными их предыдущим версиям из-за различий в артефактах кодирования. Однако эти изменения не влияют на их размер на диске или использовании памяти.

Если вы хотите наиболее близкое соответствие поведения сжатия Legacy ETC, перейдите в Project Настройки > Редактор. В Компрессор текстурыустановите ETC Компрессор на Пользовательское и выполните следующие действия:

  • Установите Быстро на ETCPACK Быстро.
  • Установите Нормальный на ETCPACK Нормальный.
  • Установить Лучший на ETCPACK Лучший.

Экспериментальное lightmapping API удаление

Экспериментальный AdditionalBakedProbes API теперь удален, а экспериментальный CustomBake API устарел. Если вам нужно вычислить данные для настраиваемых позиций световых зондов, используйте вместо этого LightTransport.IProbeIntegrator API.

Примечание: Экспериментальная система закрытия неба в CustomBake применяется только к зондам и не влияет на карты освещения.

Многопользовательский

В этом разделе описываются последние обновления пакетов и служб многопользовательских игр, которые могут повлиять на обновление.

Устаревание Netcode for GameObjects 1.X

Netcode for GameObjects 1.X устарел и заменён версией 2.X. При обновлении проекта обратите внимание на следующее:

  • Метод NetworkTransform.Update больше не может быть переопределен по причинам производительности. NetworkTransform.Update теперь заменен новым методом NetworkTransform.OnUpdate, который вызывает только экземпляры, не являющиеся авторитетными.
  • Если вы ранее перезаписали NetworkTransform.Update для получения большего контроля над неавторитетом NetworkTransform экземпляров (например, для настройки способа NetworkTransform положения экземпляров интерполируются между обновлениями), вам необходимо переопределить NetworkTransform.OnUpdate вместо этого.
  • Если вы ранее перезаписали NetworkTransform.Update чтобы добавить логику для экземпляров с полномочиями, рекомендуется завести новый класс (например, NetworkBehaviour) осуществление INetworkUpdateSystem и затем зарегистрировать или отменить регистрацию с помощью NetworkUpdateLoop при приобретении и потере авторитета.

Multiplay хостинг удаление

Multiplay Hosting больше не поддерживается в Unity Editor и runtime. Сервис будет продолжать работать до 31 марта 2026 года, после чего он будет отключен.

Multiplayer Play Mode

Версия по умолчанию пакета Multiplayer Play Mode теперь 2.0.1. Эта версия удаляет удаленные экземпляры, ранее использовавшиеся как часть сценариев Play Mode.

Если у вас есть сценарии режима воспроизведения, содержащие удаленные экземпляры, возникают ошибки. Чтобы устранить эти ошибки, выполните одно из следующих действий.

  • Перед обновлением до Unity 6.3 удалите из сценария все удаленные экземпляры.
  • Создание новых сценариев после обновления до Unity 6.3.

Мультиплеерные услуги

Версия по умолчанию пакета Мультиплеерные услуги теперь 2.0.0. Эта версия удаляет все функции, связанные с хостингом Multiplay.

Если вам нужно продолжать использовать Multiplay Hosting в вашем проекте до даты закрытия 31 марта 2026 года, выполните следующие действия:

  1. Обновление до Unity 6.0.
  2. Обновление пакета Multiplayer Services до версии 1.2.0.

Если вы больше не используете Multiplay Hosting в вашем проекте, обратите внимание на следующее:

  • Если вы используете UNITY_SERVER или ENABLE_UCS_SERVER в определениях скриптов или через платформу Выделенного Сервера и пытаетесь вызвать функции, связанные с Multiplay Hosting, ваш проект не будет компилироваться. Чтобы решить эту проблему, удалите все ссылки, связанные с Multiplay Hosting из вашего проекта.
  • Вы все еще можете изначально развернуть файлы очереди Matchmaking (.mmq), созданные в v1.2.0. Однако изменение существующего файла .mmq удалит тип Multiplay, и последующее развертывание не обновит функции, связанные с Multiplay Hosting.
  • Если вы позвоните Multiplayer Service Matchmake async функции с Multilay очереди, это приведет к Не поддерживается ошибка. Чтобы разрешить эту проблему, используйте конфигурацию очереди, не предусматривающую мультиплеер.

Оптимизация

В этом разделе описываются последние обновления оптимизации в Unity, которые могут повлиять на процесс обновления.

Адаптивная производительность перенесена в основной модуль

Основная функциональность адаптивной производительности теперь является модулем в Unity Editor, а не пакетом. Подробнее об изменениях см. в Что нового в Unity 6.3.

Требуемое действие обновления зависит от конфигурации проекта:

  • Стандартные проекты: Если вы использовали пакет Adaptive Performance по умолчанию без изменений, никаких действий не требуется. Unity автоматически использует новый модуль.
  • Измененные пакеты. Если пользовательский пакет был создан путем изменения оригинала, необходимо удалить весь код из следующих папок, чтобы избежать ошибок компиляции:
    • Editor
    • Runtime (за исключением папки Visual Scripting)
    • Tests
  • Настраиваемые поставщики: никаких действий не требуется, если только не требуется перейти на новый поставщик. ProviderSettingsEditor APIs для ваших настроек профиля сборки или UI вашего поставщика использует targetSelectionGrouping.
    • Если вы используете EditorGUILayout.BeginBuildTargetSelectionGrouping() в сочетании с DisplayBaseSettingsEnd(), вам теперь нужно указать EditorGUILayout.EndBuildTargetSelectionGrouping отдельно, так как он больше не входит в комплект с DisplayBaseSettingsEnd().

Package Manager

В этом разделе описываются последние обновления инструментов и настроек Package Manager.

Переменная среды UPM_NPM_CACHE_PATH больше не поддерживается

Предыдущие версии Unity Editor поддерживали использование переменной окружения UPM_NPM_CACHE_PATH для указания абсолютного пути для кэша данных реестра Package Manager.

Вам нужно действовать только в том случае, если у вас есть скрипты автоматизации или конвейеры, которые устанавливают значения пути в переменной среды UPM_NPM_CACHE_PATH. Нет замены для UPM_NPM_CACHE_PATH. Однако, вы можете использовать UPM_CACHE_ROOT переменной среды, которая является родительским каталогом для UPM_NPM_CACHE_PATH. Используйте UPM_CACHE_ROOT вместо UPM_NPM_CACHE_PATH и измените значения в скриптах или конвейере.

Дополнительные сведения см. в Настройка глобального кэша.

Платформы

В этом разделе описываются последние обновления инструментов и параметров для конкретных платформ.

Android

В этом разделе представлены последние обновления инструментов и настроек, специфичных для Android.

Исчезновение значков

Поддержка круглых и старых значков устарела. Рекомендуется использовать адаптивные значки. Дополнительные сведения см. в разделе Значок в Android Настройки плеера.

Android 16 изменений поведения большого экрана

Начиная с версии Android 16 операционная система Android больше не применяет фиксированные параметры ориентации, изменения размера и соотношения сторон для приложений, работающих на устройствах с большим экраном. Это может изменить поведение приложения на планшетах, складных устройствах и других устройствах с большим экраном.

Unity теперь предоставляет новую настройку App Category Player, чтобы помочь вам сохранить прежнее поведение для игровых приложений. Чтобы убедиться, что ваш проект освобожден от этих Android 16 изменений и сохраняет его настроенную ориентацию, изменяемость размера и соотношение сторон, установите App Category на Game. Настройка App Category Player заменяет устаревшую PlayerSettings.Android.androidIsGame API.

Дополнительные сведения см. в Android 16 Изменения поведения для устройств с большим экраном.

Обновленные инструменты сборки Android

Версии инструментов сборки Android для Gradle и Android Gradle Plugin (AGP) обновлены для обеспечения совместимости с последними инструментами разработки Android. Обновленные версии выглядят следующим образом:

Инструмент Предыдущая версия Обновленная версия
Градль 8.13 9.1.0
AGP 8.10.0 9.0.0

Обзор изменений, внесенных этими обновлениями, см. в разделе Что нового в Unity 6.3.

Unity автоматически применяет это обновление в большинстве проектов. Возможно, потребуется внести изменения вручную, если применяется любое из следующих условий:

  • Настраиваемые шаблоны Gradle включены в Настройки проигрывателя > Настройки публикации или ваш проект включает mainTemplate.gradle или launcherTemplate.gradle.
  • В вашем проекте используются старые сторонние плагины, которые не обновляются для обновлений Gradle и AGP.

Для обеспечения плавного перехода в соответствующих случаях следует принять следующие меры:

  • Если у вас включен пользовательский шаблон Gradle Custom Gradle Template, проверьте файлы .gradle на наличие устаревших атрибутов. Unity отображает диалоговое окно при сборке, когда обнаруживаются устаревшие атрибуты, и автоматически переименовывает их для использования более новых версий.

  • Проверьте наличие обновлений у сторонних поставщиков SDK, таких как Advertising и Analytics, чтобы убедиться, что они поддерживают AGP 9.0.0.

  • Для проектов с настраиваемой логикой в шаблонах .gradle обязательно ознакомьтесь с устаревшим APIs, перечисленным в официальных примечаниях к выпуску AGP.

  • Настройте уникальные пространства имен для любых пользовательских плагинов или библиотек Android в вашем проекте. Установите пространство имен в:

    • AndroidManifest.xml: пакет=“com.example.library.unique”
    • build.gradle: пространство имен “com.example.library.unique”

Веб

В этом разделе описываются последние обновления веб-версии Unity, которые могут повлиять на процесс обновления.

Facebook Платформа Instant Games устарела

Платформа Facebook для мгновенных игр устарела и будет удалена в будущем выпуске. Платформа больше не рекомендуется для использования в производственных целях. Дополнительные сведения см. в Уведомление об устаревании: Unity Поддержка Facebook мгновенных игр.

Для создания мгновенных игр используйте веб-платформу вместо.

Программы

В этом разделе описываются последние обновления программирования в Unity, которые могут повлиять на процесс обновления.

SerializeField ограничение атрибута на поля

Атрибут [SerializeField] был обновлен, так что его можно применять только к полям. Применение его к свойствам, методам, типам или другим элементам кода теперь приведет к ошибке компиляции. Это изменение помогает обеспечить правильное использование атрибута, так как оно не влияет на члены, не являющиеся полями.

Проекты, которые уже используют атрибут правильно, не будут затронуты. Только проекты, которые неправильно применили атрибут, будут иметь ошибки компилятора.

Если возникает ошибка компиляции, обычно ее можно устранить, удалив атрибут из затронутого члена. Если возникает ошибка компиляции из-за применения атрибута к автоматически реализованному свойству, когда предполагалось применить [SerializeField] к вспомогательному полю автоматически реализованного свойства, используйте синтаксис [field: SerializeField], чтобы применить его правильно.

Дополнительные сведения см. в ,SerializeField, и Правила сериализации.

UI Toolkit

В этом разделе перечислены последние изменения UI Toolkit в Unity, которые могут повлиять на процесс обновления.

USS обновление библиотеки анализатора

Парсер UI Toolkit USS был обновлен, чтобы улучшить обнаружение и проверку ошибок. Хотя эти улучшения повышают точность, они могут ввести небольшие изменения, отмечая недействительные USS, которые ранее были проигнорированы или неправильно обработаны. Эти поведения не являются новыми, но обновленный парсер теперь лучше идентифицирует эти проблемы.

Можно столкнуться со следующими изменениями в поведении:

  • Обновленный анализатор теперь лучше обнаруживает недействительные или отсутствующие селекторы, которые ранее игнорировались или неправильно преобразовывались. Например, одиночные точки (.) в селекторах были ошибочно преобразованы в подстановочные символы (*).

  • Проверка синтаксиса теперь значительно улучшена. Ошибки, такие как отсутствующие или дополнительные скобки, избыточные точечные запятые, или другие неправильно оформленные USS синтаксис теперь обнаруживаются и сообщаются.

  • Неподдерживаемые функции CSS теперь лучше обнаруживаются, такие как селекторы псевдо-элементов или расширенная функциональность CSS, не поддерживаемая UI Toolkit. Кроме того, теперь можно настроить обработку ошибок для неподдерживаемых функций CSS через поле Unsupported Selector Action в импортере Inspector. Вы можете изменить поведение от ошибки по умолчанию до предупреждения или выбрать игнорировать проблему полностью.

Если ваш файл USS содержит ошибки синтаксиса, импорт файла будет заблокирован. Чтобы проверить ошибки и предупреждения, вы можете просмотреть файл в Inspector или перейти в окно Консоли. После устранения ошибок файл будет импортирован как обычно.

XR

В этом разделе перечислены последние обновления XR, которые могут повлиять на процесс обновления.

Упразднение Magic Leap

Поддержка для Unity Magic Leap XR Plugin теперь устарела, и поддержка для Magic Leap (x86_64) build target для новых проектов теперь удалена. В Unity 6.3 и более поздних версиях поддержка Magic Leap ограничена существующими проектами. Для получения дополнительной информации об устаревшем Magic Leap, см. Поддержка Magic Leap.

Дополнительные ресурсы