Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

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

Примечание. Следуйте советам в этом разделе в порядке выпуска. Например, если вам нужно обновить проект с 2018 до 2020, прочтите руководства по обновлению 2019, чтобы узнать, есть ли какие-либо изменения, которые вам нужно внести, прежде чем читать руководства по обновлению 2020.

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

Обратите внимание, что 2019 LTS также известен как 2019.4.

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


Облегченный конвейер рендеринга (LWRP) становится универсальным конвейером рендеринга (URP)

Упрощенный конвейер рендеринга (LWRP) теперь называется универсальным конвейером рендеринга (URP) в Unity 2019.3 и более поздних версиях.

Если в вашем проекте используется LWRP, вам потребуется обновить проект, чтобы использовать URP. Пошаговое руководство по процессу обновления см. в подпапке Руководство по переходу с LWRP на URP.

Вверх

Обновление ShaderUtil

ShaderUtil.ClearShaderErrors() заменен на ShaderUtil.ClearShaderMessages() для согласованности имен и теперь помечен как устаревший. скрипты вашего существующего проектаЧасть кода, позволяющая создавать собственные компоненты, запускать игровые события, изменять свойства компонентов с течением времени и реагировать на ввод пользователя любым удобным для вас способом. Подробнее
See in Словарь
автоматически обновляются, когда вы открываете их в Unity 2019.4.

Вверх

Работа анимации C#

Задания анимации C# перемещаются из экспериментального пространства имен из UnityEngine.Experimental.Animations в UnityEngine.Animations.

Unity 2019.4 автоматически обновляет большинство ваших сценариев, за исключением сценариев со следующими методами расширения заданий Animator:

  • BindStreamTransform
  • BindStreamProperty
  • BindCustomStreamProperty
  • BindSceneTransform
  • BindSceneProperty
  • OpenAnimationStream
  • CloseAnimationStream
  • ResolveAllStreamHandles
  • ResolveAllSceneHandles

В эти скрипты необходимо вручную добавить операторы UnityEngine.Animations;.

Вверх

Изменения API конвейера рендеринга (SRP)

Удалены недокументированные события RenderPipeline.beginCameraRendering и RenderPipeline.beginFrameRendering. Их следует заменить событиями из класса RenderPipelineManager.

Статические защищенные функции RenderPipeline BeginFrameRendering и BeginCameraRendering были удалены. Вы должны заменить их подписью, которая принимает ScriptableRenderContext в параметре. Кроме того, теперь есть методы EndCameraRendering и EndFrameRendering, которые также необходимо вызывать.

Back to top

Адресуемые

AsyncLoad устарел. Вместо этого используйте Async.LoadAssetAsync.

Вверх

Новый конвейер импорта объектов

Новый конвейер импорта активов доступен в Unity 2019.3 и более поздних версиях. Если у вас есть существующий проект, вы можете перейти на новый конвейер импорта активов с помощью Project Settings Window в редакторе:

Изображения не обнаружено
Изображения не обнаружено

Выбор Версии 2 сообщит редактору, что теперь вы хотите использовать новый конвейер импорта активов вместе с этим проектом, а перезапуск вашего проекта приведет к его повторному импорту с использованием нового кода конвейера импорта активов. По сути, это имеет тот же эффект, что и удаление папки «Библиотека», но без ее удаления. При переключении на использование конвейера импорта активов V2 результаты импорта из исходного конвейера импорта активов не удаляются, поскольку V2 создает собственную структуру папок для хранения результатов импорта. Проекты, созданные в Unity 2019.2 или более ранней версии, по-прежнему будут использовать исходный конвейер импорта активов по умолчанию. При первом открытии такого проекта в Unity 2019.3 вы получите возможность перейти на новый конвейер импорта активов. Если вы откажетесь, ваш проект продолжит использовать исходный конвейер импорта активов. Кроме того, выбранная версия сохраняется в файле EditorSettings.asset вашего проекта, поэтому ее можно контролировать.

Изображения не обнаружено

Новые проекты, созданные с помощью нового конвейера импорта активов

При создании нового проекта с помощью Unity 2019.3 или более поздней версии новый конвейер импорта активов стал новым способом работы по умолчанию. Все новые проекты, которые вы создаете, будут использовать его.

Изменения в работе конвейера импорта нового объекта

Несколько версий одного и того же ресурса кэшируются в папке библиотеки
Вплоть до Unity 2019.2 (с исходным конвейером импорта активов) папка библиотеки состояла из идентификаторов GUID активов, являющихся их именами файлов. Таким образом, переключение с платформы на другую приведет к аннулированию результата импорта в папке Library, что приведет к повторному импорту при каждом переключении платформы.

Изображения не обнаружено

Конвейер импорта объектов, версия 1

Если вам приходилось переключаться между платформами несколько раз в день, это может легко занять несколько часов, в зависимости от размера вашего проекта. Некоторые из вас нашли обходные пути для этого, такие как наличие копии вашего проекта для каждой платформы на вашем компьютере, но это не очень хорошо масштабируется. В новом конвейере импорта активов мы удалили сопоставление GUID с именем файла. Поскольку зависимости
См. в Словарь
для конкретного актива отслеживаются, мы можем их хэшировать все вместе, чтобы создать ревизию для результата импорта актива. Это позволяет нам иметь несколько ревизий для каждого актива, что означает, что мы больше не связаны сопоставлением GUID с именем файла. Отсутствие этого требования позволяет нам иметь результаты импорта, которые работают в разных конфигурациях. Для быстрого переключения платформ у нас мог бы быть результат импорта для каждой платформы, чтобы при переключении платформ туда и обратно результат импорта уже был там, что позволяет платформе переключаться на много порядков быстрее, чем с конвейером импорта активов V1.

Изображения не обнаружено

Asset Import Pipeline V2

Кэширование и ускоритель Unity
Большинству импортеров была проделана значительная работа, чтобы улучшить их детерминированность и положительно повлиять на кеширование. Это означает, что если используется Unity Accelerator, результат импорта будет загружен в централизованное хранилище, где другие машины могут подключаться и получать выгоду от работы, выполненной для одного и того же актива на другой машине. Активы с динамическими зависимостями теперь можно кэшировать (например, вложенные префабы, шейдеры и т. д.). Более полный список импортеров и связанных с ними файлов можно найти на новой странице руководства AssetDatabase

Кэширование импортеров по сценарию:
ScriptedImporters и импортеры с зарегистрированными зависимостями не кэшировались со старым конвейером импорта активов.

Старый Behaviour

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

НовыйBehaviour

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

Количество вызовов OnPostProcessAllAssets

В старом конвейере импорта активов количество вызовов функции OnPostProcessAllAssets было недетерминированным. Это означает, что эту функцию можно вызывать один или несколько раз для одних и тех же изменений. С новым конвейером импорта активов будет один вызов OnPostProcessAllAssets для обнаруженных изменений скрипта (файлы .cs) и один вызов для изменений, не связанных с скриптом (например, .png, . файлы fbx, .wav).

Синхронная компиляция скрипта

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

Вверх

Редактор Tilemap теперь является пакетом

TilemapИгровой объект, позволяющий быстро создавать 2D-уровни с использованием фрагментов и наложения сетки. Подробнее
См. в Словарь
Редактор теперь является пакетом. Этот пакет автоматически устанавливается в новые проекты Unity, созданные с помощью шаблона 2D-проекта. Дополнительную информацию об установке пакета см. в разделе Добавление и удаление пакетов.

Все общедоступные классы перемещены в пространство имен UnityEditor.Tilemaps. Unity компилирует ваши скрипты, которые ссылаются на эти классы, в актив определения сборки «Unity.2D.Tilemap.Editor». Это:

  • GridBrush
  • GridBrushEditorBase
  • GridBrushEditor
  • GridSelection

Unity попытается обновить соответствующие инструкции Tilemap using в ваших скриптах, но проверьте и при необходимости измените.

Если вы ссылаетесь на классы Tilemap Tooling со сценариями, которые являются частью определения сборки, вам следует добавить определение сборки «Unity.2D.Tilemap.Editor» в качестве ссылки на определение сборки под своим определением сборки. Unity может установить это автоматически, но измените его, если это не так.

Определение сборки для Tilemap Editor
Определение сборки для Tilemap Editor

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

Если у вас есть предварительно скомпилированные сборки, ссылающиеся на классы Tilemap Tooling из предыдущей версии Unity, вам необходимо обновить и перекомпилировать эти сборки, чтобы они ссылались на новые сборки Tilemap Tooling.

Примеры этих проблем при импорте предварительно скомпилированной сборки (как ошибки в окне консоли):

Failed to extract {Class in Precompiled Assembly} class of base type UnityEditor.GridBrush when inspecting {Precompiled Assembly} Unloading broken assembly {Precompiled Assembly}, this assembly can cause crashes in the runtime

Эти ошибки могут быть вызваны наследованием от одного из классов инструментов Tilemap, таких как GridBrush.

Примеры этих проблем при использовании предварительно скомпилированной сборки (как ошибки в окне консоли):

TypeLoadException: Could not resolve type with token 01000011 (from typeref, class/assembly UnityEditor.GridBrush, UnityEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null) Error: Could not load signature of {Method in Precompiled Assembly) due to: Could not resolve type with token 01000011 (from typeref, class/assembly UnityEditor.GridBrush, UnityEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null) assembly:UnityEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null type:UnityEditor.GridBrush member:(null) signature:

Эти ошибки могут быть вызваны созданием или вызовом одного из методов классов Tilemap Tooling, таких как GridBrush.

Вверх

SpriteTooling теперь является пакетом

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

  • По умолчанию этот пакет не добавляется в новый проект Unity, если только новый проект не создается с помощью шаблона 2D-проекта.
  • Этот пакет будет добавлен в существующие проекты Unity (2019.1 и более ранние версии) при обновлении до Unity 2019.1. Вы можете удалить этот пакет, если ваш проект не использует 2D-спрайты и не требует использования SpriteA 2D-графических объектов . Если вы привыкли работать в 3D, спрайты — это, по сути, просто стандартные текстуры, но есть специальные приемы комбинирования текстур спрайтов и управления ими для повышения эффективности и удобства во время разработки. Подробнее
    См. в разделе Словарь
    Инструменты.
  • В рамках преобразования инструментария спрайтов в пакет пространства имен Experimental были удалены. Если в вашем проекте есть сценарии, которые ссылаются на классы, связанные с инструментами Sprite, убедитесь, что они используют правильное пространство имен после обновления, например. добавив «используя UnityEditor.U2D.Sprites», если требуется.
  • Если вы ссылаетесь на классы Sprite со сценариями, которые являются частью определения сборки, вам необходимо добавить определение сборки Unity.2D.Sprite.Editor в качестве ссылки на определение сборки под своим определением сборки.
Определение сборки для инструментов Sprite
Определение сборки для инструментов Sprite

Вверх

Пользовательский интерфейс Unity теперь является пакетом

Пользовательский интерфейс Unity (UGUI) теперь представляет собой пакет com.unity.ugui. Вы можете получить к нему доступ из диспетчера пакетов (меню: Окно > Диспетчер пакетов).

Unity UI(пользовательский интерфейс) Позволяет пользователю взаимодействовать с вашим приложением. Подробнее
See in Словарь
— это основной пакет, который поставляется с Unity. Вам не нужно устанавливать его в новых проектах. При обновлении существующих проектов Unity, созданных в версии 2019.2b1 и более ранних, до Unity 2019.2 этот пакет добавляется автоматически. Определения сборки автоматически получают ссылку на сборку uGUI. Если вы устанавливаете Unity 2019.2 поверх более старой версии Unity, убедитесь, что папка GUISystem, расположенная в \Editor\Data\UnityExtensions\Unity, удалена. В противном случае вы можете получить ошибки переопределения класса. Исходный код пользовательского интерфейса Unity больше не публикуется в BitBucket, поскольку Unity предоставляет его вместе с пакетом. Документация по API пользовательского интерфейса Unity больше не находится в основном справочнике по Scripting API. Вы можете получить к нему доступ в разделе Scripting API документации пакета пользовательского интерфейса Unity.

Вверх

Элементы пользовательского интерфейса теперь являются стандартной функцией, а не экспериментальной

Для получения дополнительной информации см. руководство по обновлению UI Elements 2019.1.

Вверх

Удаление среды выполнения сценариев, эквивалентной .NET 3.5

Эквивалент .NET 3.5 для версии среды выполнения сценариев был удален. Проекты автоматически переносятся для использования эквивалента .NET 4.x при открытии в 2019.2.

Вверх

Улучшение освещения

До 2019.1 ползунок Indirect Intensity затрагивал только карты освещенияпредварительно обработанную текстуру, которая содержит эффекты источников света на статических объектах. в сцене. Карты освещения накладываются поверх геометрии сцены для создания эффекта освещения. Подробнее
См. в Словарь
при использовании прогрессивного LightmapperИнструмент в Unity, который запекает карты освещения в соответствии с расположением источников света и геометрией в вашей сцене. Подробнее
См. в Словарь
. Для EnlightenСистема освещения от Geomerics, используемая в Unity для карт освещения и глобального освещения в реальном времени. Подробнее
См. в Словарь
, он был применен к обоим световые зондыСветовые зонды хранят информацию о том, как свет проходит через пространство в вашей сцене. Набор световых зондов, расположенных в заданном пространстве, может улучшить освещение движущихся объектов и статических пейзажей LOD в этом пространстве. Подробнее
См. в Словаре
и световых картах. Теперь все бэкенды применяют значение Indirect Intensity как к картам освещения, так и к датчикам освещения. После повторного запекания освещения вы можете заметить, что датчики будут казаться ярче, если значение Indirect Intensity было изменено. Лучше всего очистить запеченные данные перед повторной запеканием карт освещения после обновления.

Вверх

Изменение конструктора UnityAPICompatibilityVersionAttribute

Конструктор, принимающий одну строку, устарел. Информацию о поддерживаемых перегрузках см. в документации.

Вверх

Измененные системные требования

Для проектов, созданных с помощью Unity 2019 LTS, требуются версии macOS 10.12 или Ubuntu 16.04 или более поздние версии.

Вверх

Многопользовательский (UNet) API высокого уровня перемещен в пакет

Многопользовательский API высокого уровняСистема создания многопользовательских возможностей для игр Unity. Он построен поверх нижнего уровня транспортного уровня связи в реальном времени и выполняет многие общие задачи, необходимые для многопользовательских игр. Дополнительная информация
See in Словарь
перемещен из расширения в упаковка. Это не влияет на класс NetworkTransport (низкоуровневый API). Все зависимости, которые были в движке Unity, были перемещены в пакет. Это означает, что высокоуровневый API теперь независим, за исключением некоторых подключений к профилировщикуокну, которое поможет вам оптимизировать игру. Он показывает, сколько времени вы тратите на различные области вашей игры. Например, он может сообщать о проценте времени, затраченном на рендеринг, анимацию или игровую логику. Подробнее
См. в Словарь
, перенос которого в настоящее время невозможен.

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

Вверх

Директива UNITY_ADS удалена

Начиная с версии 2019.4 Unity автоматически не определяет UNITY_ADS. Вам нужно либо прекратить использовать UNITY_ADS в своих скриптах, либо создать для него новый настраиваемый глобальный параметр #define. См. страницу Компиляция, зависящая от платформы, чтобы узнать, как создать новый настраиваемый глобальный параметр #define.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3