Юрий Смоленский
Эффективная разработка на движке Unity: обзор полезных инструментов
Компания Unity со своим движком Unity Engine, на котором сторонние разработчики могут делать собственные игры, стала титаном мира гейм-dev. Почти половина из ТОП-50 игр в Steam разработана на этой платформе. В данной статье Игорь Фролов, опытный Unity-разработчик, создавший игры с миллионными аудиториями, рассказал об особенностях использования некоторых важных для своей работы инструментов.
Скорость и эффективность разработки на Unity Engine может быть кратно увеличена благодаря дополнительным инструментам, которые доступны на платформе игроделам. Так, полезные инструменты разработчика на Unity чаще всего представлены платными плагинами к среде разработки Unity Engine.
Инструменты повышения эффективности разработки на Unity: редактор

В экосистеме разработки Unity поддерживается возможность добавлять пользовательские окна редактора, так как стандартная компоновка такого окна не подойдет для решения всех задач разработки. Инструменты, нацеленные на улучшение существующих окон редактора и на создание собственных:
- Odin Inspector: один из самых популярных плагинов для Unity. С его помощью можно существенно кастомизировать интерфейс инспектора вашего компонента, не прибегая к написанию Editor-кода. Добавляя атрибуты к полям вашего класса, можно группировать элементы в инспекторе, скрывать или показывать поля по условиям, выводить кнопки и большие таблицы, делать многое другое. Также плагин позволяет сериализовать неподдерживаемые по умолчанию типы, такие как Dictionary или абстрактные классы. Впрочем, с этим плагином нужно быть аккуратным, так как разросшиеся кастомные инспекторы от Odin могут быть очень прожорливы по ресурсам;
- NaughtyAttributes: бесплатная альтернатива Odin Inspector, но имеет куда меньше возможностей по кастомизации и сериализации (трансформация данных из объекта в более простые типы, - прим. ред.);
- vFolders 2, vInspector 2, vHierrarhy 2: семейство решений для расширения возможностей стандартных окон редактора Unity. vFolders 2 – кастомные иконки, цвета и фильтры для удобной работы с папками в Project Window. vInspector 2 – улучшенный инспектор с кастомными кнопками, быстрой сериализацией и расширенной визуализацией данных. vHierarchy 2 – цвета, иконки и быстрые действия для удобной навигации в Hierarchy Window.
Подведем итоги: Odin Inspector покрывает большую часть потребностей, которые могут возникнуть в вопросе окон редактора, но является платным. NaughtyAttributes включает меньше опций, но является бесплатным. В определенных ситуациях могут подойти vFolders 2, vInspector 2 или vHierrarhy 2 с хорошим, но сравнительно узким функционалом.
Инструменты повышения эффективности разработки на Unity: внедрение зависимостей
Dependency Injection (DI) – это шаблон проектирования, который упрощает управление зависимостями в коде. Вместо того, чтобы объекты создавали зависимости самостоятельно, они получают их извне. Тем самым удается избежать «распухания» методов самого класса. DI – неотъемлемая часть абсолютно любого IT-проекта, вне зависимости от того, на каком движке/языке или фреймворке он написан. Есть следующие полезные инструменты управления зависимостями на Unity:
- Zenject: один из самых популярных DI-фреймворков. Как и любой похожий фреймворк, он позволяет «прокидывать» зависимости через конструкторы, методы и поля. Также он «из коробки» поддерживает «фабрики» (речь идет о паттерне разработки «Фабрика», - прим. ред.) и пулинг объектов. Имеет большое комьюнити и развернутую документацию. На данный момент поддержка Zenject’a прекращена. Его основной альтернативой стал Extenject, который является самым полярным форком (версией, – прим. ред.) Zenject. Он сохраняет весь функционал Zenject, но получает обновления и исправления от сообщества пользователей;
- VContainer: это легковесный и высокопроизводительный DI-контейнер, вдохновленный Zenject. Он быстрее Zenject благодаря использованию IL2CPP-friendly кодогенерации. Имеет более «чистый» API и встроенную поддержку async/await (асинхронности и различных методов, связанных с ней, – прим. ред.).
Итак, Zenject является традиционным, популярным способом решения проблемы на Unity, однако он уже не поддерживается. К тому же, VContainer быстрее Zenject.
Инструменты повышения эффективности разработки на Unity: чит панели и консоли
При тестировании и разработке продукта очень важно иметь возможность быстрого доступа к логам и данным проекта. В том числе даже в такой ситуации, когда вы тестируете игру с какого-либо мобильного устройства.
Кроме того, для облегчения процесса тестирования крайне полезно иметь так называемую чит-панель, позволяющая по заранее сгенерированным командам управлять параметрами игры в реальном времени, без необходимости вручную проходить уровни или пытаться воссоздать какие-то определенные сценарии.
- SRDebugger: инструмент, сочетающий в себе и внутриигровую консоль, и чит-панель с кастомными кнопками. Самое главное, весь этот функционал доступен на любом «девайсе», включая мобильные устройства. Имеется встроенный профайлер (средство визуализации «узких мест» в коде, забирающих ресурсы, - прим. ред.) и баг репортер;
- Quantum Console: похожий по функционалу инструмент, но с большим упором именно на текстовую консоль, что более предпочтительно для крупных проектов. Позволяет выполнять команды, просматривать логи и быстро изменять параметры игры во время работы;
- In-game Debug Console: бесплатная альтернатива вышеуказанным плагинам, но из функционала здесь только внутриигровая консоль.
SRDebugger не зря упомянут в первую очередь. К его преимуществам перед другими можно отнести наличие встроенного профайлера и баг-репортера.
Другие варианты могут похвастаться бесплатной версией. Возможность тестировать игру прямо из самой игры и с любого устройства способна здорово ускорить разработку и облегчить жизнь разработчикам!
Инструменты повышения эффективности разработки на Unity: редактирование без рекомпиляции
Традиционная компиляция написанного кода занимает существенную часть времени разработчика. Он может «собираться» продолжительное время, не давая – если не используются специальные инструменты – делать ничего другого. При этом работа специалиста оказывается парализованной на некоторое время.
На Unity есть решения, позволяющие вносить изменения в код без необходимости повторной компиляции проекта. Эти решения позволяют делать это прямо в рантайме, то есть когда активирован Play Mode. Игорь порекомендовал для решения проблемы следующие плагины:
- Hot Reload: наиболее популярный плагин, позволяющий избежать «пересборки» кода. Благодаря компиляции только измененных частей, разработчики могут быстро тестировать и отлаживать код, что существенно повышает продуктивность. Однако стоит помнить про технические ограничения, обусловленные самой природой процесса компиляции «на лету». Плагин не поддерживает: добавление новых публичных полей и методов, generic типы, а также сложные вложенные структуры.
- Fast Script Reload: бесплатный аналог с похожим функционалам. Здесь вы также можете вносить изменения в C#‑код без остановки Play Mode. Однако функционал и дополнительные возможности чуть менее продвинутые, нежели у Hot Reload.
Hot Reload обладает максимумом функций для оптимизации работы над игрой с точки зрения рекомпиляций, однако другие плагины, Fast Script Reload, в частности, могут похвастатья отдельными, более удобными функциями.
Инструменты повышения эффективности разработки на Unity: твины и системы анимаций

Анимация является неотъемлемой частью любой игры. В Unity есть встроенные инструменты, позволяющие создавать и переключать анимации любой сложности. Для некоторых, слишком простых сценариев, как, например, «шейк» сферы по нажатию, создавать отдельный аниматор с «машиной состояний» (контейнер, который хранит в себе состояние какого-либо объекта в игре в текущий момент времени, - прим. ред.) и переключением между «стейтами» (состояниями, - прим. ред.) может оказаться чрезмерным.
То же самое относится и к случаям, когда нам нужно анимировать объекты процедурно, из кода. Встроенная в Unity система анимаций тут не подходит. Инструменты для решения этой проблемы:
- DoTween: мощная и крайне популярная библиотека для создания tween-анимаций в Unity. Благодаря интуитивному и лаконичному API вы можете создавать простые анимации из кода, объединять их в секвенции, зацикливать, добавлять кастомные колбеки (например, по завершению) и многое другое. Также DoTween хорошо оптимизирован и показывает высокую производительность даже при большом количестве одновременно анимированных объектов. Существует как бесплатная версия, так и Pro. Последняя отличается расширенным функционалом и возможностью создавать «твины» в редакторе Unity;
- Animancer: другой популярный плагин, нацеленный на использование встроенной системы Animation, но в обход машины состояний Animator Controller. Он упрощает работу с анимациями, снимая потребность в сложных анимационных «деревьях», и дает разработчикам гибкий API для воспроизведения, плавных переходов и смешивания анимаций. Animancer особенно полезен в проектах с динамическими анимациями, где важно быстро менять состояния «на лету», без предварительной настройки контроллера.
Итого: DoTween отличается расширенным функционалом и возможностью создавать «твины» в редакторе Unity. Animancer особенно полезен в проектах с динамическими анимациями, где важно быстро менять состояния «на лету», без предварительной настройки контроллера.
Инструменты повышения эффективности разработки на Unity. Достойны упоминания!
В арсенале Unity-разработчиков есть множество инструментов для решения конкретных специфических задач, возникающих при работе над играми.
- UniRx: это библиотека реактивного программирования для Unity, позволяющая легко управлять потоками событий и асинхронными операциями, делая код более декларативным и удобочитаемым;
- UniTask: это легковесная альтернатива стандартным C#-таскам, оптимизированная для Unity, которая снижает накладные расходы на аллокации и повышает производительность асинхронного кода;
- Final IK: комплексное решение для реализации инверсной кинематики, которое помогает создавать реалистичные движения персонажей и улучшать взаимодействие с окружением;
- Easy Save 3: Универсальное решение для сохранения и загрузки данных игры, позволяющее без усилий сохранять прогресс, настройки и другие важные данные;
- Behavior Designer: визуальное решение для создания деревьев поведения (behavior trees), упрощающее проектирование сложных сценариев ботов.
Больше популярных инструментов разработки на Unity можно найти на официальной площадке Unity, где они размещены.
Инструменты повышения эффективности разработки на Unity: вместо заключения
В регулярном отчете экспертов платформы за 2021 говорится, что количество игр, созданных на движке Unity Engine, увеличилось в этом году на 93% по сравнению с 2020 годом. Количество новых разработчиков на платформе Unity за этот период увеличилось на 31%.
Доля Unity в общем количестве выпускаемых игр традиционно велика, особенно в сегменте продукции под смартфоны. Столь бурное развитие обещает новые возможности, механики и альтернативы, и новые ниши.
05.04.2022
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
|