Unity программирование с помощью

Программирование в Unity для опытных программистов

В Unity скрипты можно использовать для разработки практически любого элемента игры или интерактивного контента с графикой реального времени. Unity поддерживает скрипты на C#, созданные в соответствии с одним из двух основных подходов: традиционным и широко использующимся объектно-ориентированным подходом и информационно-ориентированным подходом, который теперь тоже поддерживается в Unity в отдельных случаях благодаря нашему высокопроизводительному многопоточному стеку информационно-ориентированных технологий (DOTS).

Unity поддерживает C#, стандартный в отрасли язык программирования, в некоторой степени похожий на Java или C++.

По сравнению с C++, C# легче в изучении. Кроме того, он относится к категории языков «с управлением памятью», то есть он автоматически распределяет память, устраняет утечки и так далее.

Как правило C# удобнее C++, если вам нужно в первую очередь разработать игру, а потом уже работать над различными сложными аспектами программирования.

Вся интерактивность и игровой процесс в Unity строятся на основе трех фундаментальных блоков: объекты GameObject, компоненты и переменные.

Любой объект в игре является GameObject, будь то персонажи, источники света, спецэффекты, декорации и все остальное.

Компоненты
Игровые объекты сами по себе не имеют никакого поведения. Для того, чтобы объект начал работать, игровому объекту нужны различные атрибуты, добавляемые с помощью компонентов.

Компоненты (Component) определяют поведение игровых объектов, к которым они прикреплены, и управляют ими. Простой пример — создание источника света, включающее прикрепление компонента Light к GameObject (см. ниже). Таким же примером может быть добавление компонента Rigidbody к объекту, чтобы он мог падать.

Компоненты имеют ряд свойств или переменных, которые можно настроить в окне Inspector редактора Unity и/или с помощью скрипта. В примере выше к свойствам источника света относятся дальность, цвет и интенсивность.

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

Компоненты на основе скриптов позволяют запускать игровые события, проверять объект на предмет столкновений, применять физические свойства, программировать реакцию на управление пользователя и многое другое. См. Unity Scripting API для дополнительной информации.

Демофильм Unity Megacity создан на основе DOTS

Традиционная модель «игровой объект — компонент» хорошо работает и сегодня, поскольку она проста как для программистов, так и других пользователей, а также удобна для создания интуитивных интерфейсов. Добавите компонент Rigidbody к объекту GameObject — он начнет падать, добавите компонент Light — GameObject начнет излучать свет. Все остальное также подчиняется этой простой логике.

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

Компоненты и игровые объекты относятся к «тяжелым объектам C++». Все объекты GameObject имеют имя. Их компоненты представляют собой оболочки для C# поверх компонентов на C++. Это упрощает работу с ними, но может влиять на производительность, если они будут храниться в памяти без явной структуры. Объект C# может находиться на любом участке памяти. Объект C++ также может находиться в любом участке памяти. Группировка и последовательное размещение объектов в памяти отсутствуют. При каждой загрузке в центральный процессор для обработки объект приходится собирать по частям из разных участков памяти. Это может сильно замедлить загрузку, а оптимизация потребует много усилий.

Для решения этих проблем мы начали перерабатывать базовые системы Unity на основе высокопроизводительного, многопоточного стека информационно-ориентированных технологий или DOTS (в настоящее время в статусе предварительной версии).

DOTS позволяет вашей игре эффективно использовать все возможности новейших многоядерных процессоров. Стек состоит из следующих компонентов:

  • система задач C# для эффективного исполнения кода на многопоточных системах;
  • Entity Component System (ECS) для разработки высокопроизводительного кода по умолчанию;
  • компилятор Burst для компиляции скриптов в оптимизированный нативный код.

ECS — это новая система компонентов в составе DOTS; все традиционные объектно-ориентированные манипуляции над GameObject отражаются на экземпляре в новой системе. Название «Компонент» никак не изменилось. Важнейшее отличие — в структуре данных. Подробнее об этом можно узнать из статьи «О DOTS: Entity Component System».

Демофильм Unity Megacity создан на основе DOTS

Помимо того, что это улучшенный подход к написанию кода игры с точки зрения дизайна, ECS позволяет вам использовать систему задач C# Unity и компилятор Burst и тем самым полностью использовать преимущества современного оборудования.

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

Некоторые из технологий DOTS все еще находятся в статусе предварительной версии, поэтому мы советуем разработчикам использовать стек для решения отдельных вопросов производительности проекта, не строить на базе DOTS весь проект. См. раздел «Дополнительные ресурсы» в конце этой страницы, где указаны ссылки на ключевые ресурсы DOTS.

Unity Profiler для оптимизации производительности

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

Вот несколько полезных ресурсов по оптимизации в Unity:

Наилучшие методики для общих случаев (включая подробные советы по оптимизации системы интерфейса Unity)

Источник

Программирование в Unity

Инструменты Unity помогают программистам любого уровня создавать увлекательные и высокопроизводительные интерактивные приложения для более чем 20 платформ.

10 % программистов по всему миру используют Unity

Более 50 % игр созданы на базе Unity

Профессия разработчика Unity занимает седьмое место по росту востребованности

В чем преимущества Unity?

Человек с телефоном, на котором виден главный экран Among Us

Развертывайте высокопроизводительный код C# на более чем 20 платформах

В Unity используется среда .NET и язык программирования C# — самый популярный в разработке игр. Движок компилирует код C# для каждого целевого устройства, поэтому вы можете развертывать приложения для ПК, мобильных устройств, консолей, а также платформ AR и VR.

Женщина пишет код на компьютере

Ускоряйте работу, используя удобную для себя среду IDE

Воспользуйтесь инструментами для повышения производительности в современных интегрированных средах разработки, например Visual Studio или Rider. Пишите код и выполняйте его отладку, чтобы совершенствовать свой проект или редактор Unity, проводите аналитику качества и производительности и многое другое.

Персонаж фентези-игры в редакторе Unity

Достигайте большего, используя редактор Unity

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

Улучшайте качество кода

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

Строки кода на языке C#

Вам больше не нужно создавать 3D-платформы реального времени для своего приложения — Unity сделает это за вас. Пропишите скрипты интерактивного игрового процесса, а затем проведите тестирование прямо в редакторе. В Unity используется язык C#, который автоматически распределяет и освобождает память, собирает мусор для профилактики утечек и не только.

Сцена из Subnautica

«Система Addressable Asset System от Unity очень нам помогла. Она оперативно устранила проблемы с памятью. Без этого мы не смогли бы так быстро создать игру для платформы Switch», — Макс Макгуайр, технический директор, Unknown Worlds. Платформа Unity предлагает множество инструментов, которые помогают управлять кодом и ассетами проектов для достижения максимальной производительности. Например, пакет Addressables снижает ресурсоемкость системы управления ассетами и упрощает создание и развертывание контента. Объекты ScriptableObjects идеально подходят для проектов, в которых нужно управлять большими объемами данных, меняющихся в ходе разработки.

Сцена из Volcano High

«Plastic открыла ранее недоступный нам уровень детального контроля веток. Она легко поддается парсингу, удобна в работе с проектами и не нарушает их структуру», — Салим Даббуа, директор студии, KO_OP. Plastic SCM — это лучшая система контроля версий для разработчиков Unity, которая великолепно подходит для обработки крупных двоичных файлов и создания быстрых рабочих процессов. Кроме того, система имеет упрощенный интерфейс для участников команды, которые не занимаются программированием. Редактор также можно интегрировать с Perforce или использовать любое другое решение, например Git.

Промоарт Jurassic World Alive

«Благодаря Unity наши художники больше не так сильно зависят от программистов. Когда мы использовали предыдущий движок, программистам приходилось проводить большую часть работ по интеграции визуальных элементов. Теперь же у художников появилось значительно больше возможностей. Я заметила, что просьб передвинуть два пикселя влево или сделать что-то в этом духе стало намного меньше», — Катрин Барбо, технический директор, Ludia.

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

Персонажи-воины, представляющие разные игровые устройства и консоли

«Для Arena of Valor нам требовалась поддержка многочисленных конфигураций оборудования в различных странах, и Unity помог достигнуть ожидаемой нами стабильной производительности», — Мэллоу Ю, технический директор, Tencent Games.

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

Скриншот Unity Profiler

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

Unity Profiler предоставляет данные о производительности приложения, а Memory Profiler позволяет снизить потребление памяти. Unity Test Framework позволяет создавать автоматические тесты, чтобы убедиться, что код работает должным образом. Backtrace избавляет от рутинной работы по обработке аварийных завершений и исключений кроссплатформенных приложений, позволяя сосредоточиться на выпуске игры.

Источник

Читайте также:  Программирование брелка шлагбаума ан моторс
Оцените статью