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

Обновление до Unity 2022 LTS

На этой странице перечислены изменения в версии Unity 2022 LTS, которые могут повлиять на существующие проекты при обновлении их с версии 2021 до 2022 LTS.

Примечание: 2022 LTS также известен как 2022.3.0.

Контуры страницы

Свойство forceLimit теперь принимает силу вместо импульса

Функция привода артикуляции forceLimit ранее использовалась в качестве предела импульса вместо предела силы. Это сделало предельную силу зависимой от значения fixedDeltaTime.

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

При обновлении проекта Unity автоматически делит соответствующие значения на Time.fixedDeltaTime, установленные на странице ProjectSettings > Время, чтобы избежать неправильной конфигурации. Это позволяет устранить большинство случаев, когда роботы симулируются на основе значения Время, установленного проектом.

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

Изменить на генерируемую карту UVs

Процедура создания UV в Unity изменилась. В проектах, использующих параметр Generate Lightmap UVs в Model Import Settings, карты освещения могут отображаться повреждёнными. Чтобы устранить проблему, заново запеките все карты освещения проекта.

Это изменение касается только проектов, которые используют Generate Lightmap UVs.

Изменение на GradientField в UI Toolkit

Начиная с Unity 2022.1, в выборщике цветов в GradientField по умолчанию не включено HDR. Существующие проекты, использующие GradientField, теперь используют обычный выборщик цветов вместо выборщика цветов HDR.

Чтобы продолжить использование выборщика цветов HDR, вы можете включить его с помощью свойства HDR в GradientField.

UI Toolkit Численные и составные поля доступны во время выполнения

Теперь доступны следующие поля, которые работают автоматически во время выполнения:

  • DoubleField
  • FloatField
  • IntegerField
  • LongField
  • Hash128Field
  • RectField
  • RectIntField
  • Vector2Field
  • Vector3Field
  • Vector4Field
  • Vector2IntField
  • Vector3IntField
  • BoundsField
  • BoundsIntField

Файлы UXML в ваших проектах не обновляются и не работают при обновлении. Однако, когда вы добавляете новые продвинутые типы через UI Builder, это нарушает обратную совместимость ассетов UXML с более старыми версиями Unity. Чтобы сохранить обратную совместимость ассетов UXML, вам нужно использовать старые типы (пространство именUnityEditor.UIElements) в файлах UXML.

Параметр Физические ключи в управлении вводом включен по умолчанию

Опция Физические клавиши позволяет вам отображать коды клавиш на физической раскладке клавиатуры, а не на раскладке, специфичной для языка, которая может отличаться у пользователей в разных регионах. Например, на некоторых клавиатурах первый ряд букв читается «QWERTY», а на других он читается «AZERTY». Это означает, что если вы написали скрипт для использования хорошо известных клавиш «WASD» для перемещения, они не будут в правильном физическом расположении (как клавиши со стрелками) на клавиатуре с раскладкой AZERTY. При включенных Физических клавишах, Unity использует общий ANSI/ISO «Qwerty» раскладку для представления физического расположения клавиш независимо от фактической раскладки пользователя. Это означает, что если вы указываете клавишу «Q», она всегда будет крайней левой буквой на первом ряду буквенных клавиш, даже если на клавиатуре пользователя в этом положении находится другая буква.

Начиная с 2022.1 опция включена по умолчанию с намерением отказаться от старого поведения и удалить его в будущем.

Добавлена поддержка BatchRendererGroup

BatchRendererGroup API изначально был написан для демо MegaCity, но никогда не был полностью документирован или пригодным для использования без большого количества деталей реализации. Этот API был переписан с нуля и полностью документирован и поддерживается.

О том, как пользоваться новым интерфейсом, см. BatchRendererGroup стр.

Конвейеры отображения

Это руководство по обновлению описывает, как обновить до версии 2022.2 встроенный конвейер рендеринга Unity.

Чтобы обновить другие конвейеры рендеринга до версии 2022.2, ознакомьтесь с документацией для используемого конвейера рендеринга:

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

Глобальное освещение "Запеченное" устарело.

При обновлении проекта до этой версии, Unity удаляет Enlighten baking backend из раскрывающегося списка выбора lightmapper и заменяет Progressive Lightmapper в каждом Scene, где вы выбрали Enlighten baking backend.

На силиконовых устройствах Apple, Unity заменяет Progressive GPU Lightmapper для Enlighten baking backend. На всех других устройствах, Unity выбирает CPU Progressive Lightmapper.

Чтобы продолжить использовать бэкенд запекания Enlighten, откройте Изменить > Project Настройки > Редактор, затем в разделе Графика этого меню включите Enable Enlighten for Baked GI (Legacy). Однако этот параметр недоступен в версии 2023.1 и более поздних.

Минимальные отскоки не доступны в окне Освещение

Свойство Minimum Bounces прогрессивного Lightmapper больше не доступно в окне Освещения.

Когда вы обновляете проект до 2022.2, Unity перенастраивает значение Минимальные отскоки на 2, рекомендуемое минимальное количество отскоков для lightmapping. Чтобы изменить это значение, отредактируйте свойство LightingSettings API minBounces.

Шаблоны Gradle по умолчанию Unity изменились

В 2022.2, Unity обновил версии по умолчанию всех инструментов, используемых Android. Новые версии выглядят следующим образом:

Инструмент Версия
SDK
Компонент Cmdline-tools версия 6.0
Версия компонента Build-tools 32.0.0
Компонент platform-tools 32.0.0
Платформа (уровень API) 31 и 32 добавлены по умолчанию
Компонент " Инструменты " Убраны
NDK r23b
JDK (OpenJDK) 11.0.14.1+1
Градль 7.2
Android Плагин Gradle 7.1.2

Обновление версии Gradle 7.2 изменило некоторые параметры конфигурации файлов build.gradle. Это потребовало значительных изменений в шаблонах gradle по умолчанию Unity. Unity не будет пытаться обновить пользовательские шаблоны Gradle, чтобы они соответствовали новому формату, что означает, что проекты, содержащие пользовательские файлы шаблонов, могут не быть построены. Чтобы решить эту проблему, воссоздайте любые пользовательские файлы шаблонов, основанные на новых файлах шаблонов по умолчанию.

Сведения об изменениях параметров конфигурации build.gradle см. в примечаниях к выпуску Android Плагин Gradle.

Навигация и поиск пути переносятся из ядра Unity в пакет навигации AI

Документация пакета находится здесь: https://docs.unity3d.com/Packages/com.unity.ai.navigation@latest

Если у вас есть проекты, созданные с помощью функции Навигация в предыдущих версиях движка Unity, вы можете выполнить одно из следующих действий:

  • Продолжайте использовать ваши проекты в том виде, в каком они есть
  • Преобразование проектов в новый пакет

В любом случае, пакет AI Навигация автоматически устанавливается и добавляется в ваш проект.

Чтобы начать использовать новый пакет, вам необходимо преобразовать свой проект следующим образом:

  1. Перейти в Окно > AI > NavMesh Обновитель.
  2. В окне NavMesh Updater выберите тип данных для преобразования.
  3. Нажмите кнопку Инициализировать конвертер, чтобы обнаружить и отобразить выбранные типы данных.
  4. Выберите данные для преобразования.
  5. Нажмите Преобразовать активы, чтобы завершить преобразование.

В процессе преобразования обновитель NavMesh Updater вносит следующие изменения:

  • Любой NavMesh, который ранее был вставлен в сцену, теперь будет отсылаться из компонента NavMeshSurface, созданного на новом GameObject, называемом Навигация.
  • Любой объект, который был помечен как Навигация Статическая, теперь будет иметь компонент NavMeshModifier с соответствующими настройками.

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

  1. Перейти в Окно > AI > Навигация.
  2. Выберите Агенты.
  3. Создание новых записей и указание соответствующих параметров.

После создания новых записей вам необходимо выполнить следующие действия:

  • Назначить вновь созданные типы агентов их соответствующим NavMeshSurfaces в Навигации, созданной для этой сцены,
  • Назначьте типы агентов NavMeshAgents, предназначенные для использования этим NavMesh.

Чтобы найти настройки, которые использовались для каждого существующего NavMesh, выберите файл NavMesh .asset в окне Project. Настройки NavMesh отображаются в окне Inspector.

Если в вашем проекте используются компоненты NavMeshSurface, NavMeshModifier, NavMeshModifierVolume или NavMeshLink, определенные скриптами, загруженными из хранилища Unity NavMeshComponents GitHub , то удалите эти скрипты и любые связанные с ними файлы, прежде чем добавлять пакет AI Навигация в ваш проект. Если вы не удалите эти скрипты, вы можете получить конфликты и ошибки, связанные с этими компонентами в Консоли. Новые компоненты отражают то же поведение, что и старые компоненты в вашем проекте, за исключением случаев, когда используются следующие компоненты:

  • Компонент NavMeshSurface теперь включает опцию использования только тех объектов, которые имеют NavMeshModifier в процессе запекания.
  • Теперь можно указать, применять ли компонент NavMeshModifier к дочерним объектам в иерархии.

Изменение порядка дочерних объектов вложенного префаба больше не поддерживается как переопределение

В прежних версиях Unity можно было менять порядок дочерних GameObject вложенного экземпляра префаба и сохранять новый порядок как переопределение. Начиная с Unity 2022.3 такое поведение больше не поддерживается. Изменение внесено, чтобы сделать систему префабов надёжнее и предсказуемее и избежать ситуаций, когда изменения переопределений становились слишком сложными и непредсказуемо меняли интерфейс и другие элементы.

При обновлении проекта до версии Unity 2022.3 или более поздней, любые подобные переопределения изменения порядка дочерних объектов отбрасываются. Дочерние объекты GameObjects вложенных экземпляров префаб возвращаются в порядок, определенный в их первоначальном ассете префаб.

Потенциальное воздействие:

  • UI проблемы отображения: UGUI компоненты зависят от иерархического порядка для отображения. Переупорядоченные UI элементы могут появляться в неожиданных слоях или позициях.
  • Проблемы с логикой скриптов: Скрипты, которые зависят от конкретных индексов родственников или порядка GameObject, могут вести себя неожиданно.
  • Проблемы с Animation и взаимодействием: Компоненты, которые ссылаются на дочерние объекты по позиции индекса, могут указывать на неправильные объекты.

Например, рассмотрим следующую структуру префаб:

  • Префаб В
    • Ребенок 1
    • Ребенок 2
  • Префаб А
    • Префаб В
      • Ребенок 2
      • Ребенок 1

До обновления: Префаб A показывает Префаб B детей в следующем порядке: ребенок 2, ребенок 1 (переупорядочено).

После обновления: Префаб A показывает Префаб B детей в следующем порядке: ребенок 1, ребенок 2 (возвращается к первоначальному порядку).

Как идентифицировать и исправить затронутые префабы

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

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

Для устранения ошибки префаб вручную выполните следующие действия:

  1. В обновленном проекте откройте родительский проект префаб, содержащий вложенный экземпляр префаб с неправильным порядком дочерей.
  2. В представлении Hierarchy найдите дочерний объект GameObject внутри вложенного объекта префаб, который нужно переместить.
  3. Дублировать этот дочерний экземпляр GameObject. Дубликат создается как новый, обычный экземпляр GameObject в родительском экземпляре префаб, и не является частью вложенного экземпляра префаб.
  4. Переместите этот дубликат GameObject на его правильное место в иерархии.
  5. Удалите исходный дочерний GameObject из вложенного экземпляра префаба. Эта операция сохраняется в родительском префабе как переопределение «удалённый GameObject».
  6. Переименуйте дубликат GameObject, чтобы он соответствовал имени оригинала.

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