Unity 2020.2

Инструменты для программистов

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

Что нового в Unity 2020.2

Познакомьтесь с крупными улучшениями и новыми функциями для программистов в Unity 2020.2. Подробности читайте в примечаниях к выпуску.

Повысьте скорость компиляции с помощью детерминированной компиляции

Когда проекты становятся сложнее, время компиляции новых изменений кода увеличивается, что снижает продуктивность вашей команды. Unity 2020.2 предлагает возможность выполнять детерминированную компиляцию при компиляции скриптов C#. Это позволяет избегать лишней повторной компиляции ссылок определения сборки (.asmdef), если открытые метаданные сборки не изменяются при компиляции скриптов для редактора. Эта функция особенно полезна для сокращения времени итерации, когда вы вносите изменения в сборки, имеющие множество прямых и/или непрямых ссылок.

Подробнее

Поддержка C# 8

Unity 2020.2 поддерживает все новейшие функции и улучшения C# 8, кроме методов интерфейса по умолчанию. Они включают в себя допускающие пустые значения ссылки, из-за чего компилятор выдает предупреждение каждый раз, когда вы пытаетесь назначить null в качестве переменной типа ссылки. Switch-выражение с сопоставлением с образцом открывает более простой способ написания кода условий.

Полный список нововведений в C# 8 приведен в документации Microsoft.

C#_8_support.cs (C#)
public static RGBColor FromRainbow(Rainbow colorBand) =>
    colorBand switch
    {
        Rainbow.Red    => new RGBColor(0xFF, 0x00, 0x00),
        Rainbow.Orange => new RGBColor(0xFF, 0x7F, 0x00),
        Rainbow.Yellow => new RGBColor(0xFF, 0xFF, 0x00),
        Rainbow.Green  => new RGBColor(0x00, 0xFF, 0x00),
        Rainbow.Blue   => new RGBColor(0x00, 0x00, 0xFF),
        Rainbow.Indigo => new RGBColor(0x4B, 0x00, 0x82),
        Rainbow.Violet => new RGBColor(0x94, 0x00, 0xD3),
        _              => throw new ArgumentException(message: "invalid enum value", paramName: nameof(colorBand)),
    };
Посмотрите руководство Microsoft для C# 8

Root Namespace теперь доступно в настройках определения сборки

Namespaces в C# представляют собой эффективный способ организовывать ваш код и избегать коллизий названий классов с другими пакетами и библиотеками. Root Namespace теперь доступно в качестве нового поля в инспекторе asmdef и используется, чтобы автоматически заполнять namespace при создании нового скрипта в Unity, Visual Studio и Rider.

Не забудьте обновить пакеты Visual Studio и Rider до последней версии, если вы хотите использовать этот функционал.

Подробнее
Сравнение времени последовательной и параллельной конверсии IL2CPP двух проектов до и после многопоточной конверсии. Красная линия показывает результаты демонстрационного проекта, созданного нами, а оранжевая — сторонней студии.

Ускоренная компиляция сборки

В Unity 2020.2 значительно улучшено время компиляции сборки. Если вы вносите изменения, не затрагивающие код, например, в материалы, шейдеры или префабы, IL2CPP-конверсия из сборок .NET в C++ будет полностью пропускаться при создании плеера. 

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

Подробнее

Последовательные значения Time.deltaTime

В Unity 2020.2 исправлены непоследовательные значения Time.deltaTime, которые приводили к прерывистым движениям объектов во время игрового процесса. Интерфейс TimeManager был переработан так, чтобы расчеты времени кадра были более стабильны, что обеспечивает намного более плавное движение объектов, когда игра работает при стабильной частоте обновления кадров. Unity 2020.2 поддерживает эти улучшения стабильности времени на iOS, macOS, PS4, Switch, tvOS, UWP, Windows и Xbox One. Улучшения для Android, Windows/Linux на Vulkan и XR будут выпущены позднее. Узнайте подробности в статье в блоге.

Подробнее
В целом при оптимизации скорость работы повышается в 12-800 раз при обработке 100-5000 источников импорта (общее улучшение производительности показано на графике справа).

Улучшение производительности

В Unity 2020.2 внедрены несколько значительных оптимизаций, включая вложенные префабы, что серьезно повышает скорость сортировки и подстановки. Теперь поиск по функции регистрации автоматизированных средств импорта в редакторе выполняется до 800 раз быстрее. Также команда по оптимизации переработала Camera.main, что в некоторых проектах сократило время его запроса на несколько сотен миллисекунд.

Подробнее

Сопрограммы редактора и ускоренные рабочие процессы с настраиваемым входом в игровой режим

Настраиваемый вход в игровой режим вышел из экспериментальной стадии и теперь позволяет отключать любое из действий (или оба сразу) «Domain Reload» и «Scene Reload», что ускоряет вход в игровой режим. Сопрограммы редактора также вышли из стадии предварительного версии, и теперь вы можете запускать выполнение методов итерации в самом редакторе, также как сопрограммы в скриптах MonoBehaviour управляются во время выполнения программы.

Подробнее

Оптимизация управляемого кода с Unity Linker

Unity Linker выполняет статический анализ для оптимизации управляемого кода. Также он определяет количество атрибутов и позволяет вам отмечать зависимости в случаях, когда их невозможно обнаружить. В Unity 2020.2 API этого инструмента было обновлено, чтобы соответствовать Mono IL Linker. Начиная с Unity 2020.1 Unity Linker может обнаруживать некоторые простые характеры отражений, что снижает необходимость в файлах link.xml.

Подробнее

Обновления профайлера

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

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

Подробнее

Улучшения анализатора Roslyn

Процесс компиляции теперь поддерживает анализаторы Roslyn. Это позволяет анализаторам кода C# выполняться асинхронно в качестве фонового процесса в редакторе Unity, не прерывая ваш рабочий процесс итерации. Также вы можете запускать их синхронно с помощью командной строки. 

Анализаторы Roslyn и файлы наборов правил в проектах Unity — это мощные инструменты, помогающие проверять ваш код на стиль, качество и другие проблемы. Мы можете использовать уже созданные библиотеки анализатора для проверки кода или писать собственные анализаторы, чтобы продвигать лучшие методики или правила в вашей организации.

Подробнее

Безопасный режим Unity

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

Подробнее

Загрузить Unity 2020.2

Все это и многое другое доступно уже сегодня.

Мы используем cookie-файлы, чтобы вам было удобнее работать с нашим веб-сайтом. Подробнее об этом можно узнать на странице, посвященной политике использования cookie-файлов.

Согласен