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

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

Например:

  • Изменения в формате данных, которые могут потребовать повторного запекания.
  • Изменения значения или поведения любых существующих функций, параметров или значений компонентов.
  • Устаревание любой функции или функции. (Предлагаются альтернативы.)

MonoBehaviour.OnValidate теперь вызывается при добавлении MonoBehaviour к GameObjectфундаментальному объекту в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь
в Редакторе

MonoBehaviour.OnValidate вызывается, когда СценаСцена содержит среду и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. Словарь
загружается, когда игровые объекты дублируются или когда изменение значения в Inspectorокне Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройках проекта, что позволяет вам проверять и отредактируйте значения. Подробнее
См. в Словарь
. Теперь он также вызывается при добавлении MonoBehaviour к GameObject в редакторе.


Сценарии: обратный вызов InitializeOnLoad теперь вызывается после десериализации

Время обратного вызова для InitializeOnLoad изменилось. Ранее он вызывался в точке, которая могла привести к недопустимым состояниям объектов для существующих сериализованных объектов при вызове API Unity. Теперь он вызывается после десериализации и создания всех объектов. В рамках создания объектов должен быть вызван конструктор по умолчанию. Это изменение означает, что конструкторы объектов теперь вызываются перед статическими конструкторами InitializeOnLoad, тогда как InitializeOnLoad ранее вызывался перед некоторыми конструкторами объектов.

Пример:

[System.Serializable] public class SomeClass { public SomeClass() { Debug.Log("SomeClass constructor"); } } public class SomeMonoBehaviour : MonoBehaviour { public SomeClass SomeClass; } [InitializeOnLoad] public class SomeStaticClass { static SomeStaticClass() { Debug.Log("SomeStaticClass static constructor"); } }

Ранее это приводило к следующему:
SomeStaticClass static constructor (InitializeOnLoad)
SomeClass constructor (конструктор объекта)

После этого изменения теперь будет:
SomeClass constructor (конструктор объекта)
SomeStaticClass static constructor (InitializeOnLoad)


Новая карта нормалейТип текстуры карты рельефа, который позволяет добавлять детали поверхности, такие как неровности, канавки , и царапины на модели, которые отражают свет, как если бы они были представлены реальной геометрией. Подробнее
См. тип Словарь
, поддерживающий формат BC5.

До сих пор Unity поддерживала либо карту нормалей RGB, либо карту нормалей AG (с x в альфа-канале и y в зеленом канале) с различным сжатиемМетод хранения данных, который уменьшает требуемый объем дискового пространства. См. Сжатие текстур, Сжатие анимации, Сжатие звука< /a>, Сжатие компоновки.
См. в формате Словарь
. Теперь есть поддержка карты нормалей RG (с x в красном канале и y в зеленом канале). UnpackNormal шейдерПрограмма, работающая на графическом процессоре. Подробнее
Функция See in Словарь
была обновлена ​​и теперь позволяет использовать RGB, AG и RG карта нормалей без добавления вариантов шейдера. Чтобы сделать это, функция UnpackNormal полагается на неиспользуемый канал карты нормалей, установленный в 1. Т.е. карта нормалей AG должна быть закодирована как (1, y, 1, x), а RG (x, y, 0, 1). Кодировщик карт нормалей Unity обеспечивает его соблюдение.

Нет необходимости в обновлении, если пользователи использовали немодифицированный Unity. Однако в случае, если пользователи создали свои собственные шейдеры карты нормалей или свою собственную кодировку, им может потребоваться принять во внимание необходимость кодирования карты нормалей AG в виде (1, y, 1, x). Если пользователи микшировали карту нормалей в swizzled AG перед распаковкой карты нормалей, им может потребоваться использовать UnpackNormalDXT5nm вместо UnpackNormal.


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

Загружать предварительно скомпилированные управляемые сборки (.dll) и сборки файлов определения сборки при запуске редактора, даже если в других скриптах Фрагмент кода, который позволяет вам создавать свои собственные Компоненты, запускать игровые события, изменять свойства Компонентов с течением времени и реагировать на ввод данных пользователем любым удобным для вас способом. Подробнее
См. в Словарь
. Это полезно для сборок расширения редактора, которые всегда должны загружаться при запуске, независимо от других ошибок компиляции сценария в проекте.


HDRширокий динамический диапазон
См. в выпуске Словарь
.

Если вы используете предварительно вычисленный GI в реальном времени или запеченный GI, интенсивные эмиссионные материалы, настроенные в более ранних версиях Unity, теперь могут выглядеть более интенсивными, поскольку их диапазон больше не ограничен. Используемое ранее кодирование RGBM давало эффективный диапазон 97 для гамма-пространства и 8 для линейного цветового пространства. Палитра цветов HDR имела максимальный диапазон 99, поэтому некоторые материалы можно было сделать более интенсивными, чем они казались. После обновления цвет излучения передается в системы GI как истинные 16-битные значения HDR с плавающей запятой (теперь диапазон составляет 64 КБ). Внутри система GI реального времени использует общий формат экспоненты rgb9e5, который может представлять эти интенсивные значения, но запеченные карты освещенияпредварительно обработанные Текстура, содержащая эффекты источников света на статических объектах сцены. Карты освещения накладываются поверх геометрии сцены для создания эффекта освещения. Подробнее
См. в Словарь
ограничены кодировкой RGBM. HDR для запеченных карт освещения будет добавлен в более позднем выпуске.


VR to XRОбщий термин, охватывающий виртуальную реальность (VR), дополненную реальность (AR) и смешанную реальность (МР) приложений. Устройства, поддерживающие эти формы интерактивных приложений, можно назвать устройствами XR. Подробнее
См. в Словарь
rename.

Пространства имен UnityEngine.VR.* были переименованы в UnityEngine.XR.*. Все типы, в названии которых есть VR, также были переименованы в их версии XR. Например: UnityEngine.VR.VRSettings теперь называется UnityEngine.XR.XRSettings и т. д.

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

Изменения пространства имен:

  • UnityEngine.VR -> UnityEngine.XR
  • UnityEngine.VR.WSA -> UnityEngine.XR.WSA
  • UnityEngine.VR.WSA.Input -> UnityEngine.XR.WSA.Input
  • UnityEngine.VR.WSA.Persistence -> UnityEngine.XR.WSA.Persistence
  • UnityEngine.VR.WSA.Sharing -> UnityEngine.XR.WSA.Sharing
  • UnityEngine.VR.WSA.WebCam -> UnityEngine.XR.WSA.WebCam

Изменения типа UnityEngine.VR:

  • VRDevice -> XRDevice
  • VRNodeState -> XRNodeState
  • VRSettings -> XRSettings
  • VRStats -> XRSStats
  • VRNode -> XRNode

Все VR.* profilerокно, помогающее оптимизировать ваша игра. Он показывает, сколько времени вы тратите на различные области вашей игры. Например, он может сообщать о проценте времени, затраченном на рендеринг, анимацию или игровую логику. Дополнительная информация
Записи See in Словарь
также изменены на XR.*.


UnityEngine.dll теперь разделен на отдельные библиотеки для каждого модуля UnityEngine.

Файл UnityEngine.dll (который содержит все общедоступные API сценариев) разделен на модули кода, охватывающие различные подсистемы движка. Это делает базу кода Unity более организованной с более чистыми внутренними зависимостями
См. в Словарь
, лучше для внутренних инструментов и делает кодовая база более разборчива. Отдельные модули включают UnityEngine.ColliderНевидимая форма, используемая для обработки физических столкновений объекта. Коллайдер не обязательно должен быть точно такой же формы, как сетка объекта — грубое приближение часто бывает более эффективным и неразличимым в игровом процессе. Подробнее
См. в Словарь
, который теперь находится в UnityEngine.PhysicsModule.dll и UnityEngine.Font которая теперь находится в UnityEngine.TextRendering.dll.

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

Однако существует один случай, когда это изменение может привести к поломке существующего кода. Это если ваш код использует отражение для получения типов UnityEngine и предполагает, что все типы находятся в одной сборке. Это означает, что такой код не сработает, потому что Collider и Font теперь находятся в разных сборках:

System.Type colliderType = typeof(Collider); System.Type fontType = colliderType.Assembly.GetType("Font");

Получение типов Collider или Font из сборки «UnityEngine» по-прежнему работает благодаря использованию перенаправления типов, например:

System.Type.GetType("UnityEngine.Collider, UnityEngine")

Unity по-прежнему включает в себя полностью монолитную UnityEngine.dll, которая содержит все API UnityEngine в папке Managed/UnityEngine.dll редактора Unity. Это гарантирует, что любая существующая Visual Studio/MonoDevelopинтегрированная среда разработки (IDE), поставляемая с Unity 2017.3 и предыдущими версиями. Начиная с Unity 2018.1, MonoDevelop заменяется Visual Studio. Подробнее
См. в Словарь
, решения, ссылающиеся на UnityEngine.dll, продолжают создаваться без необходимости обновления для ссылки на новые модульные сборки. Вам следует продолжать использовать эту сборку для ссылки на UnityEngine API в ваших пользовательских решениях, поскольку внутреннее разделение модулей может быть изменено.


Гладкость материала в стандартном шейдере.

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

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