Как сделать редактор уровней в unity

Добавил пользователь Евгений Кузнецов
Обновлено: 05.10.2024

Unity — это среда, которая позволит детям почувствовать себя настоящими разработчиками игр! На движке Unity 3D ребята могут создавать анимацию, запрограммировать игровую сцену и полноценные игры. А также познакомиться с языком программирования "Си шарп", на котором в Unity пишутся скрипты.

Школа программирования для детей "Пиксель" подготовила бесплатные уроки Unity 3D, которые познакомят детей с программой и научат создавать первые игры. Поддержите нас, ставьте палец вверх, если наш бесплатный курс по Юнити окажется полезным для ваших детей.

Как скачать Unity 3D на ПК

Для начала скачаем и установим программу на компьютер.

Урок 1. Как сделать анимации в Unity 3D

Начинаем уроки по Юнити. Первый шаг — анимирование персонажа. Мы добавим нашего дракона на сцену, изменим его размеры, научим его двигаться и бегать с заданной скоростью. Напишем наш первый скрипт.

Урок 2. Как сделать телепорт в Unity 3D

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

Урок 3. Как сделать спавн объектов в Unity 3D

Мы изучим 2 способа создания спавна объектов: на канвасе (canvas) и в пределах камеры. А еще узнаем, как создавать префабы.

Урок 4. Триггеры в Unity 3D | Столкновение персонажей

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

Урок 5. Как создать таймер в Unity 3D

Таймер нужен для почти любой игры, мы научимся создавать его с помощью корутины (Coroutine) и команды InvokeRepeating.

Урок 6. Перемещение объекта мышью в Unity 3D

Функция Mouse Drag или, по-другому, метод перетаскивания нужен для того, чтобы перетаскивать объекты в игре. Например, как мы показываем в видео, чтобы перемещать еду на персонажа и кормить его.

Урок 7. Как сделать полосу здоровья персонажа в Unity 3D

Health Bar или полоса здоровья тоже неотъемлемая часть любой игры. Мы научимся ее программировать, так чтобы полоса плавно увеличивалась и уменьшалась.

Урок 8. Как сохранить игру в Unity 3D

Если мы хотим сохранять очки или уровни в нашей игре, то нужно воспользоваться методом PlayerPrefs.

Урок 9. Создаем игру "Раннер" в Unity за 30 минут

Урок 10. Как экспортировать игру из Unity на ПК или Android (как настроить для Play Market)

В этом видео расскажем, как собрать игру под ПК или под Android: в каком порядке собрать сцены, какие им дать номера, а еще какие настройки нужны, чтобы загрузить игру Play Market.

Урок 11. Как загрузить игру в Play Market

Мы собираем игру и заполняем все настройки для Play Market. Теперь другие пользователи смогут сыграть в вашу игру, а вы будете на этом зарабатывать.

Урок 12. Как сделать прыжок в Unity 3D

В этом уроке мы разберем, как сделать прыжок персонажа в 2D- и в 3D-проекте. Для этого мы создадим две сцены, напишем скрипты на языке Си Шарп.

Урок 13. Как управлять персонажем в Unity 3D

Давайте научим нашего персонажа двигаться. Для этого мы зададим переменные типа float, они будут отвечать за скорость, поворот и перемещение по горизонтали и по вертикали. И, конечно, напишем скрипты для 2D- и 3D-версии игры.

Урок 14. LineRenderer в Unity 2D

LineRenderer позволяет упростить рисование линий. В этом видео мы напишем два скрипта: Line Point позволит проводить прямую линию между любыми двумя точками, а с помощью Draw Line мы сможем рисовать неотрывную линию.

Урок 15. Как сделать автосимулятор в Unity 3D | Как сделать гонки в Unity 3D

Пришло время сделать гоночную игру! Давайте построим небольшую трассу, настроим модель автомобиля и напишем код для коробки передач: наш автомобиль будет двигаться в разные стороны и менять скорость.

Наши плейлисты регулярно пополняются, подписывайтесь на наш YouTube-канал , чтобы следить за выходом новых видео и открывать для себя мир IT-технологий!

Если же вам нужен наставник, загляните в Школу программирования для детей “Пиксель”: запишитесь на полный курс по разработке игр на движке Unity 3D .

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

For documentation on the newest features introduced in 5.3, see What’s New in 5.3 in this Manual.

For information about upgrading your Unity projects from older versions, see the Upgrade Guide in this Manual.

Further sources of information

For further guidance, please see:

Если вы обнаружите, что на ваш вопрос нет ответа в руководстве, пожалуйста, спросите на Unity Answers или на форуме Unity. Вы сможете найти ответ на свой вопрос там.

The Unity Knowledge Base; a collection of answers to questions posed to Unity’s Support teams.

Tutorials; step by step video and written guides to using the Unity Editor.

Unity Ads Knowledge Base; a guide to including ads in your game.

Everyplay documentation; a guide to the Everyplay mobile game replay platform.

Asset Store help; help on Asset Store content sharing.

Known issues

Main.UnityOverview

Working in Unity

A complete introduction to the Unity software.

Main.Unity2D

Unity 2D

All of Unity’s 2D-specific features including gameplay, sprites and physics.

Main.Graphics

Графика

Визуальная сторона Unity, в том числе Камеры и Освещение.

Main.PhysicsSection

Физика

Физика в Unity, в том числе работа с твердыми телами и манипулирование ими в 3D пространстве.

Main.UNet

Networking

How to implement Multiplayer and networking.

Main.ScriptingSection

Скриптинг

Программирование ваших игр с использованием скриптинга в Unity.

Main.Audio

Аудио

Аудио в Unity, в том числе клипы, источники, слушатели, импорт и настройка звука.

Main.AnimationSection

Анимация

Анимация в Юнити.

Main.UISystem

Unity’s UI system.

Main.Navigation

Навигация

Навигация в Unity, в том числе ИИ и поиск пути.

Main.Services

Unity Services

Our Services for making and improving your game.

Main.VROverview

Virtual reality

Integration with VR.

Main.ContributingToUnity

Contributing to Unity

Suggest modifications to some of Unity’s source code.

Main.PlatformSpecific

Особенности платформы

Конкретная информация для многих не-настольных и веб-платформ, поддерживаемых Unity.

Разработка игр на Unity — отличный способ войти в игрострой и начать свой путь в геймдеве. Первые вопросы, которыми задаётся новичок, это как стать разработчиком игр, на что обращать внимание и где учиться.

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

Не используйте Distance() или magnitude в векторах

Для расчёта расстояния между двумя векторами есть метод Distance() и поле magnitude . Но в процессе вычислений они оба используют операцию извлечения квадратного корня, которая является очень ресурсозатратной. Чтобы этого избежать, используйте поле sqrMagnitude . Оно возвращает квадрат расстояния между векторами. Остаётся лишь сравнить его со значением, также возведённым в квадрат.

Математические операции в полях инспектора

В любых числовых полях инспектора можно вводить не только цифры, но и математические выражения. Например 2 / 3 , 0,5 * 7 .

С версии 2021.2.0 Alpha 10 в инспекторе стало ещё больше доступных выражений:

  • sqrt — извлечение квадратного корня;
  • sin / cos / tan — синус/косинус/тангенс значения соответственно;
  • floor — округление значения вниз;
  • ceil — округление значения вверх;
  • round — округление значения к ближайшему целому числу.

Также математические операции можно выполнять с выделением нескольких объектов. Например выражение -=10 отнимет 10 от соответствующей координаты каждого объекта.

Ещё можно распределить координаты случайно или равноудалённо с помощью функций L(N,M) и R(N,M) соответственно, где N и M — минимальное и максимальное значения координат.

Rich Text в консоли

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

Пример Rich Text в разработке на Unity

Создание элементов меню редактора

Используя атрибут [MenuItem(“My Menu”)] , можно создавать собственные вкладки меню и элементы в них. Требуется импорт пространства UnityEditor .

Код для создания кнопки меню в Unity

Создание дополнительных опций в контекстном меню компонента

Помимо собственных элементов меню можно создавать дополнительные элементы в контекстном меню компонентов. Для этого используется атрибут [ContextMenu(“Name”)] .

Код для созданий дополнительных опций в Unity

Кастомная опция в контекстном меню при разработке игр в Unity

Сохранение изменений компонента в Play Mode

Если в процессе создания игры на Unity внести какие-либо изменения в компонент с запущенной игрой, то эти изменения не сохранятся. Если вы вносили изменения в пределах одного компонента, то все его значения можно скопировать в контекстном меню компонента (Copy Component), а после того, как вы остановите игру, обратно их вставить через то же контекстное меню (Paste Component Values).

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

HideInInspector и SerializeField

Эти два атрибута помогут настроить отображение нужных полей в инспекторе. Если у вас много публичных полей, которые засоряют инспектор, то вы можете скрыть их атрибутом HideInInspector . Если же вам нужно, чтобы приватное поле, которое по-умолчанию не отображается в инспекторе, всё же можно было редактировать, используйте атрибут SerializeField .

Автоматическое создание глубины в изометрических играх

При создании 2D игры с изометрической проекцией вам может понадобиться имитировать глубину сортировкой слоёв спрайтов. То есть тот объект, который находится на заднем плане, должен быть на слой ниже переднего объекта. Если для неподвижных объектов это легко реализовать, просто настроив их слои в компоненте SpriteRenderer , то для подвижных объектов всё немного сложней.

Однако Unity уже позаботились об этом и дали возможность сортировать объекты по слоям, исходя из их координат. Для начала нужно настроить сортировку. Для этого перейдите в Edit→Project Settings→Graphics→Camera Settings. Свойство Transparency Sort Mode выставьте в Custom Axis , а Transparency Sort Axis в (0; 1; 0) . Теперь все объекты, которые будут находится на одном слою, будут автоматически сортироваться исходя из координаты Y. Те, что выше — на задний план, а те, что ниже — на передний.

Такой простой трюк значительно упростит разработку игр на Unity. Ведь без него бы пришлось вручную контролировать координаты различных объектов и менять их слои.

Выполнение кода, не привязанного к объекту

Атрибут метода [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)] позволит выполнить код, не привязывая скрипт к какому-либо объекту. В данном случае код вызовется сразу после загрузки сцены.

Структуры и классы

Во время разработки игры старайтесь чаще использовать структуры вместо классов, где это возможно. Это сильно уменьшит нагрузку на игру, ведь структура является типом значения, а класс — ссылочным типом.

Создание подслоёв

Меню слоёв в редакторе Unity

Фокусировка камеры редактора на объекте и следование за ним

Чтобы сфокусироваться камерой редактора на каком-либо объекте, выделите этот объект и нажмите F. Если объект движется и вам нужно, чтобы камера следовала за ним, нажмите F дважды.

Матрица коллизий

В Unity можно определить, какие из объектов будут сталкиваться друг с другом, а какие нет. Делается это через настройку матрицы коллизий. Для этого перейдите в Edit→Project Settings→Physics→Layer Collision Matrix.

Матрица слоёв физики

Если на пересечении двух слоёв убрать галочку, то объекты этих слоёв не будут сталкиваться друг с другом. В данном случае объект слоя Player не будет сталкиваться с другими объектами своего слоя и объектами слоя Walls .

Debug Mode в инспекторе

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

Меню инспектора в редакторе Unity

Пример инспектора с включённым Debug Mode в Unity

Если у компонента есть пользовательский редактор, то он не будет отображаться в в этом режиме — там будут видны только сами поля.

Мониторинг через график

В курсах по созданию игр консоль часто используется для вывода в неё каких-либо значений и мониторинга. Но если значение изменяется очень часто, то следить за этим будет не очень удобно. В таких случаях можно вывести это значение на график. Для этого вам понадобится AnimationCurve . Пример кода:

Посмотреть график можно, нажав на поле кривой в инспекторе:

Создание графика для отладки игры на Unity

Кеширование объектов

Ещё одна заметка с курсов создания компьютерных игр: старайтесь кешировать все объекты, с которыми вы часто работаете. Например, в скрипте вы часто обращаетесь к какому-либо компоненту через GetComponent . Вместо этого можно создать поле для этого компонента и присвоить его в методе Start . После этого можно будет обращаться напрямую к компоненту через это поле. Такое решение снизит нагрузку, так как операции GetComponent , Find , FindGameObjectsWithTag и т. д. сильно ресурсозатратны.

Создание пресетов для компонентов

Для каждого компонента можно создавать собственные пресеты. Пресет позволяет сохранить текущие настройки компонента и присвоить их другому компоненту того же типа. Пресеты хранятся в виде отдельных файлов.

Кнопка пресетов в компоненте Unity

Меню пресетов, которые помогут облегчить процесс разработки на Unity

Программная пауза

Снова про отладку, которая пригождается и разработчикам игр при обучении, и в дальнейшей работе. Поставить игру на паузу можно не только кнопкой в редакторе, но и через код. Для этого нужно установить поле EditorApplication.isPaused в значение true . Пригодиться это может во время отладки, когда нужно остановить игру прямо после какой-нибудь ошибки, чтобы детальнее её изучить.

Удобный импорт файлов из Photoshop в Unity

Установив пакет 2D PSD Importer, можно упростить процесс переноса изображений во время разработки игры из фотошопа в Unity. Этот пакет принимает файлы с расширением .psb . При импорте такого файла он автоматически создаёт в объекте все дочерние изображения, которые соответствуют слоям из фотошопа. Также он создаёт группу объектов с отсортированными по слоям компонентами SpriteRenderer .

Примечание Чтобы установить пакет, перейдите в Package Manager. В открывшемся окне в поле поиска введите имя нужного пакета. Выберите пакет и нажмите внизу кнопку Install.

Конечно, это далеко не все хитрости. Но уже с ними вы сможете облегчить себе процесс разработки. А узнать ещё больше фишек и профессионально освоить разработку игр на Unity можно на Факультете разработки игр от GeekBrains, где опытные преподаватели научат вас создавать игры с нуля и в том числе разберут особенности различных инструментов. Первые 6 месяцев обучения бесплатно.

Левел-дизайнер — это человек, который создает уровни. Он использует доступные ресурсы, как конструктор: берет скрипты, музыку, модели, анимации и прочие элементы игры и собирает из них карту, ориентируясь на техническое задание. Дизайнер уровней должен уметь создавать интересный геймплей, работать с игровыми движками, обладать хорошим вкусом и находить компромисс между художественными и техническими требованиями к проекту.

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

Как только поймете, что создание уровней — дело всей вышей жизни — осваивайте прототипирование на Unity или другом популярном движке. А пока мы подготовили список игр со встроенными редакторами карт для тех, кто хочет попробовать себя в роли левел-дизайнера.


Редактор уровней для Warcraft III, прошедший проверку временем. Он породил такие жанры, как Tower Defense и MOBA, а также стал катализатором вдохновения для начинающих разработчиков всех возрастов. Авторы особо успешных пользовательских карт получили работу в Valve и Riot Games.

Стандартные возможности редактора: работа с рельефом и геометрией уровней, создание триггеров и перераспределение статов персонажей. Некоторые умельцы научились прикручивать вид от первого лица к изометрии и создавать шутеры. Все это — в редакторе для RTS!

Программа получила второе дыхание в недавнем Warcraft III: Reforged, где совмещены возможности оригинала с обновленной графикой. Единственное "но" — игра не бесплатна.


Идейный наследник Warcraft III World Editor: бесплатный, красивый и простой в освоении. Созданные карты размещаются в отдельной вкладке меню игры и оснащаются набором тегов, следовательно — ее увидят большее количество людей. Другое отличие от предшественника — целевая аудитория. На платформе популярны фановые карты с отсылками к геймерской культуре, ориентированные на PvP-сражения.


Песочница для прирожденных гейм- и левел-дизайнеров. Создавайте что угодно: файтинги на гигантских селедках, симуляторы космических боев, гонки на крабах и даже целые РП-сервера. Устаревшая графика прямиком из 2003 и странные лицевые анимации внесут свою долю хаоса в и без того безумный процесс, а наличие знакомых мододелов поднимет уровень фана до небес. Профессиональное портфолио здесь не собрать, зато можно побегать по серверам, набраться вдохновения и покреативить от души.


Редактор уровней от Bethesda для Skyrim и Fallout 4. Изначально его создали под нужды проектов, но позже инструмент вышел на широкую аудиторию. Отсюда — сложность в его освоении и некоторая перегруженность деталями. Все объекты сгруппированы по тематикам: в одной папке хранится все необходимое для подземелий нордов, в другой — символика Азуры.

Skyrim популярен целое десятилетие в том числе благодаря гибким возможностям редактора. Рано или поздно игроки, заскучавшие на ванильной версии, открывают для себя мир модов и собирают из них собственную игру. В нем создаются не только уровни-пещеры. NPC-компаньон с собственным квестом, новая экономическая система или мирный городок с персонажами, живущими своей жизнью: все это может сделать даже начинающий левел-дизайнер без опыта.


В 2017 году разработчики песочницы Besiege выпустили крупное обновление с редактором карт и мультиплеером. С ним появилась возможность не просто конструировать новые объекты, но и менять физику и прочие игровые параметры. Мультиплеер превращает Besiege в тысячу новых игр. Среди них — гонки в стиле Безумного Макса, реконструкция осады средневековых замков и собственная версия форта "Боярд". Песочница вышла в 2015 году, но при прямых руках левел-дизайнера удивляет визуалом.


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


Местный редактор заточен скорее под проведение ролевых сессий, но и левел-дизайнеру есть место разгуляться. В режиме Game Master модераторы полностью контролируют созданные кампании. Они пишут сценарий для игры, выбирают карты из имеющегося списка или создают кастомные уровни, устанавливают героев для боевых и социальных взаимодействий, придумывают загадки и головоломки и даже управляют неигровыми персонажами. Еще одна особенность режима — возможность голосового взаимодействия между игроками и NPC, управляемыми мастерами.

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


Ставить кубики в Unity скучнее, чем клепать карты к любимой игре. Зато вы покажете потенциальным работодателям, что можете работать с движками и готовы сосредоточиться на самом важном — геймплее.

Создали уровень, который хочется показать друзьям или использовать в своем портфолио? Изучили принципы прототипирования? Не спешите паковать архив и устраивать массовую рассылку. Лучше дополните его YouTube-прохождением. Запишите 5-10-минутное видео, где комментируете уровень и объясняете выбор визуальных и геймплейных аспектов. В комментариях к видео укажите ссылку на файлообменник с уровнем, версию игры и список использованных модификаций.

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

Запущенная игра с управляемым персонажем

Чтобы создать свой виртуальный мир, нужен какой-то начальный персонаж, который сможет по крайней мере двигаться.

Я решил не заморачиваться с кодом. Так как я новичок, путевого ничего все равно не напишу. Следовательно, первое время буду использовать готовые ассеты. Устанавливать их можно из официального Asset Store Unity. Не сложнее, чем моды для игр.

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

Создание земли (Terrain)

Создать землю в Unity очень легко.

  1. Добавляем на сцену Terrain (GameObject → 3D Objects → Terrain).
  2. Выбираем ее в окне иерархии слева, а справа в Inspector открываем раздел Terrain.
  3. Здесь выбираем режим Paint Terrain (кисточка), ниже в поле выбираем Raise or Lower Terrain и начинаем рисовать себе горы и овраги доступными кистями. Настраиваем размер и просто водим кисточкой по террейну.
  4. Находим в интернете любую бесшовную текстуру травы. Здесь же, в инспекторе выбираем режим Paint Texture, создаем слой и запихиваем туда эту текстуру.

Мои зеленые горы

И вот у нас уже есть какие-то зеленые горы… Сойдет для начала.

Создание персонажа (First Person Controller)

  1. Идем в Asset Store, находим готовый ассет Mini First Person Controller.
  2. Нажимаем кнопку ADD TO MY ASSETS, соглашаемся с лицензией.
  3. Далее нажимаем OPEN IN UNITY.
  4. В самом Unity у нас открывается Package Manager с этим ассетом. Нажимаем Download, ждем загрузки, затем Import, потом еще раз.
  5. Находим в корневой папке проекта новую папку First Person Controller. Заходим внутрь.
  6. Находим там болванку с названием First person controller full и просто перетаскиваем на Terrain. Немного приподнимаем над землей, чтобы не застрял.

Перетаскиваем готового персонажа на сцену

Запускаем игру, бегаем, наслаждаемся своим шедевром. В этом ассете уже присутствуют звуки шагов, возможность прыгать, приседать, ускоряться. Все настройки найдете в инспекторе.

Читайте также: