Обновление до Unity 2023.1
На этой странице перечислены изменения в Unity 2023.1, которые могут повлиять на существующие проекты при обновлении их с версии 2022 LTS до 2023.1.
Контуры страницы
- Конвейеры рендеринга
- Свойства радиуса гауссовского фильтра из
LightingSettingsтеперь являются значениями с плавающей точкой - Улучшение энергосбережения светочувствительного зонда
- Запеченное глобальное освещение Enlighten больше не доступно
- Android: класс Java UnityPlayer необходимо переименовать в UnityPlayerForActivityOrService
- Android: Java-класс UnityPlayer больше не наследует FrameLayout
- FetchFirstCompatibleTypeUsingScriptableRenderPipelineExtension заменено на GetDerivedTypesSupportedOnCurrentPipeline
- CustomEditorForRenderPipelineAttribute и VolumeComponentMenuForRenderPipelineAttribute устарели
- Изменения в Android Использование шаблонов Gradle
Конвейеры отображения
Это руководство по обновлению описывает, как обновить до версии 2023.1 встроенный конвейер рендеринга Unity. Чтобы обновить другие конвейеры рендеринга до версии 2023.1, см.:
- Руководство по обновлению URP
- Руководство по обновлению HDRP
Чтобы обновить другие пакеты, обратитесь к документации для используемых пакетов.
Свойства радиуса гауссовского фильтра от LightingSettings теперь являются значениями с плавающей точкой
Средство Progressive Lightmapper включает вариант Gaussian среди расширенных Продвинутый уровень параметров фильтрации (Lighting Window > Lightmapping Settings > Filtering > Direct Filter > Gaussian). Элемент управления Радиус для фильтрации Gaussian теперь поддерживает дробный шаг, например 0,5. Ранее он поддерживал только целочисленные шаги (от 1 до 5).
В результате этого изменения эти свойства теперь устарели в C# API:
int LightingSettings.filteringGaussRadiusAOint LightingSettings.filteringGaussRadiusDirectint LightingSettings.filteringGaussRadiusIndirect
Замены с плавающей точкой для устаревших свойств:
float LightingSettings.filteringGaussianRadiusAOfloat LightingSettings.filteringGaussianRadiusDirectfloat LightingSettings.filteringGaussianRadiusIndirect
Можно вызвать одну из устаревших функций членов для округления радиуса гауссовского фильтра до ближайшего целого числа.
Улучшение энергосбережения светочувствительного зонда
Световые зонды теперь такие же яркие, как и карты освещения. Раньше световые зонды Unity были только на 94% яркими, как они должны быть. По этой причине объекты, освещенные световыми зондами, выглядели немного темнее, чем объекты, освещенные картами освещения. Из-за тонкости этого изменения, возможно, что многие пользователи не увидят заметной разницы.
Если вы предпочитаете старый вид, вы можете достичь этого следующим образом:
- Печь световые зонды.
- Используйте C# для получения копии массива LightmapSettings.lightProbes.bakedProbes.
- Для каждого экземпляра SphericalHarmonicsL2 умножайте коэффициент 0 на 16/17.
- Запишете свою копию массива обратно в LightmapSettings.lightProbes.bakedProbes.
«Глобальное освещение» больше не доступно.
Базовый модуль Enlighten Baked Global Illumination больше не доступен.
При обновлении проекта до этой версии, Unity удаляет backend Enlighten baking из раскрывающегося списка выбора lightmapper и заменяет Progressive Lightmapper в каждом Scene, где вы выбрали backend Enlighten baking.
На силиконовых устройствах Apple, Unity заменяет Progressive GPU Lightmapper для Enlighten baking backend. На всех других устройствах, Unity выбирает CPU Progressive Lightmapper.
Enlighten предварительно рассчитанный Realtime Global Illumination все еще доступен и поддерживается до Unity 6.
Android: класс Java UnityPlayer необходимо переименовать в UnityPlayerForActivityOrService
UnityPlayer Класс Java заменён двумя новыми классами-мостами: UnityPlayerForActivityOrService и UnityPlayerForGameActivityОба этих новых класса вытекают из UnityPlayer, но открытые методы, такие как displayChanged и windowFocusChanged переехали из UnityPlayer конкретно к UnityPlayerForActivityOrService.
Если вы расширить деятельность по умолчанию Unity и использовать UnityPlayer класс, вы можете столкнуться с ошибками компиляции. В этом случае переименуйте UnityPlayer до UnityPlayerForActivityOrService.
Android: Java-класс UnityPlayer больше не наследует FrameLayout
UnityPlayer Java-класс больше не наследует FrameLayout. Если вам нужен доступ FrameLayout, позвоните getFrameLayout функции на UnityPlayer экземпляр.
FetchFirstCompatibleTypeUsingScriptableRenderPipelineExtension заменено на GetDerivedTypesSupportedOnCurrentPipeline
RenderPipelineEditorUtility.FetchFirstCompatibleTypeUsingScriptableRenderPipelineExtension теперь устарел. Используйте GetDerivedTypesSupportedOnCurrentPipeline вместо него. Сигнатура этого метода также изменилась; теперь он возвращает все производные типы, а не только первый, который он встречает. Это предотвращает несоответствия, потому что Unity не гарантирует порядок типов.
CustomEditorForRenderPipelineAttribute и VolumeComponentMenuForRenderPipelineAttribute устарели
CustomEditorForRenderPipelineAttribute и VolumeComponentMenuForRenderPipelineAttribute теперь устарели. Используйте CustomEditor и VolumeComponentMenu вместо них. Чтобы ограничить выбор конвейера, когда эти атрибуты активны, объедините их с SupportedOnRenderPipelineAttribute и укажите тип RenderPipelineAsset. Если вы хотите активировать атрибут SRP, который работает с Встроенным Render Pipeline, используйте SupportedOnRenderPipelineAttribute без параметров. Это обеспечивает унифицированный рабочий процесс для обоих атрибутов, когда возникает необходимость активировать их на конкретном конвейере.
Изменения в Android использовании шаблонов Gradle
Был введен новый API для модификации проекта Gradle Android. API может быть использован для замены старого рабочего процесса шаблонов Gradle Android. Шаблоны будут работать как прежде, если новый API не будет использован.
Для использования нового API можно использовать Templates Upgrader:
- Откройте Android Настройки плеера.
- Перейдите в Настройки публикации > Строительство.
- Выберите Обновить шаблоны до C#.