Юнити кратко что это

Обновлено: 03.07.2024

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

Что представляет собой Unity?

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

Чем хорош Unity?

В первую очередь, как мы уже упоминали, движок Unity3D дает возможность разрабатывать игры, не требуя для этого каких-то особых знаний. Здесь используется компонентно-ориентированный подход, в рамках которого разработчик создает объекты (например, главного героя) и к ним добавляет различные компоненты (например, визуальное отображение персонажа и способы управления им). Благодаря удобному Drag & Drop интерфейсу и функциональному графическому редактору движок позволяет рисовать карты и расставлять объекты в реальном времени и сразу же тестировать получившийся результат.


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

Третья сильная сторона Unity 3D – поддержка огромного количества платформ, технологий, API. Созданные на движке игры можно легко портировать между ОС Windows, Linux, OS X, Android, iOS, на консоли семейств PlayStation, Xbox, Nintendo, на VR- и AR-устройства. Unity поддерживает DirectX и OpenGL, работает со всеми современными эффектами рендеринга, включая новейшую технологию трассировки лучей в реальном времени.

Физика твердых тел, ragdoll и тканей, система Level of Detail, коллизии между объектами, сложные анимации – все это можно реализовать силами движка. Стереотипное мнение о том, что движок пригоден только для небольших инди-игр и неспособен выдавать красивую картинку, давно уже не актуально: достаточно посмотреть технодемо ADAM, The Blacksmith и Book of the Dead от создателей среды Unity, чтобы убедиться в ее выдающихся способностях.

Наконец, Unity доступен бесплатно, что открывает перед независимыми разработчиками дверь в игровую индустрию. Конечно, существуют ограничения: бесплатная версия движка демонстрирует лого Unity перед запуском игры, а проект, созданный с ее помощью, не должен приносить разработчику больше $100 тысяч в год. Впрочем, тарифы на подписку не опустошат кошельки даже начинающей команды: Про-версия стоит $125 в месяц, что не так уж много в сравнении с другими движками, причем базовая версия содержит ровно тот же функционал, что и профессиональная.

Чем плох Unity?


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

Кому стоит использовать Unity (в первую очередь)?

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


Большие студии также найдут в движке свои преимущества. Его возможности движка позволяют создавать масштабные игры близкие к ААА-классу. За примерами далеко ходить не нужно: Pillars of Eternity, Firewatch, Inside, Superhot – все эти громкие проекты созданы на Unity. Будь то дорогой сюжетно-ориентированный проект или многопользовательская браузерная игра на Unity3D, разработчики в любом случае получат мощный и гибкий инструментарий для создания максимально качественного продукта.

10 лучших игр на Unity


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

Pillars of Eternity


Ori and the Blind Forest


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

7 Days to Die

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

Endless Legend


Фэнтезийная 4X-стратегия, которая предлагает игроку завоевать далекую планету, используя все возможные способы – от дипломатии до военной мощи.

Firewatch


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

Inside


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

Kerbal Space Program


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

Subnautica


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

Sunless Sea


Мрачная roguelike-игра, выполненная во вселенной, которая совмещает в себе шарм Викторианской эпохи и мистическую атмосферу лавкрафтовских мифов.

Untitled Goose Game


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

Cuphead


Кооперативный run-n-gun платформер, в котором пара чашек (можно играть и одному, но это не так весело, как в кооперативе) сражается с разнообразными боссами, чтобы отработать долг перед дьяволом.

Escape from Tarkov


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

Калибр


Сетевой командный боевик, посвященный деятельности подразделений спецназа разных стран. Игрокам предстоит выполнять сложные задания в захватывающих PvP и PvE режимах.

Pathfinder: Kingmaker


Компьютерная ролевая игра от российской студии Owlcat Games, основанная на вселенной настолки Pathfinder. Геймеров ждет путешествие по фэнтезийному миру и участие в эпической сюжетной кампании.

Superhot


Концептуальный шутер, в котором время идет только тогда, когда двигается игрок. Это превращает каждую перестрелку в изящную головоломку, а впечатление от игрового процесса усиливается необычным визуальным стилем проекта. Также доступна VR-версия.

Beat Saber


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

Hearthstone


Одна из главных карточных игр в индустрии, ККИ от компании Blizzard, покорившая игроков огромным количеством механик и затягивающим игровым процессом. Доступна бесплатно на РС и мобильных платформах.


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

Outer Wilds


Приключенческая игра, чей сюжет основан на концепции петли времени. Игроку дается всего 22 минуты на изучение планеты, после чего она погибает и цикл начинается заново. Одно из лучших приключений 2019 года.

Геймер со стажем (предпочитаю одиночные игры). Люблю истории, которые нам рассказывают видеоигры, но считаю, что геймплей должен быть выше сюжета, даже если это симулятор ходьбы. Также интересуюсь современной гик-культурой, музыкой и кино.

Доброго времени суток. Данная статья посвящена мультиплатформенному инструменту Unity3d. В статье рассмотрены оптимальные, по моему мнению, способы работы с движком, даны практические советы по эксплуатации и дополнительные (общие) сведения; рассмотрены перспективы развития Unity3d.

Содержание:
  • Раздел 1. Введение
    • Что такое Unity ?
    • Возможности Unity3d
    • Проблема дополнительных знаний
    • Вспомогательная литература
    • На это стоит обратить внимание
      • NB!
      • Сцены
      • Отладка
      • Написание скриптов
      • Видеоуроки
      • Устранение ошибок
      • Выводы
      • Публикация игры
      • *Оптимизация
      • Теория графики
      • Полезные ссылки
      • Мнение
        • Что хочется увидеть в будущем?

        Раздел 1. Введение

        Что такое Unity3d ?

        image

        Будет прекрасно, если вы владеете, например, 3Ds max'ом, это вам сильно поможет при создании игры. Что касается меня, то мне пришлось освоить 3Ds max на базовом уровне, ибо нигде не мог найти нужную мне модель дома [3]. В любом случае вам понадобится установленный 3Ds max на ваш компьютер, если вы собираетесь импортировать готовые 3D модели. Ибо, в большинстве своем, необходимые модели имеют формат проекта, т.е. необходимо будет зарендерить их в соответствующий для Unity3d формат, например, в *.3DS, и только после этого делать импорт в Unity, в противном случае последний выдаст ошибку.

        Раздел 2. Начало работы

        Вспомогательная литература

        image

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

        image

        image

        На это стоит обратить внимание

        Приведу несколько советов при создании игры в Unity3d.

        º Коллайдеры
        Что это такое — коллайдер? Коллайдер — это область пространства, при взаимодействии с которой выполняются те или иные скрипты, действия. Чтобы лучше понять что это такое, представьте, что вы подходите к автоматически открывающимся дверям универмага. За пару метров от дверей, срабатывает датчик и двери распахиваются перед вами, но если вы пройдете за три метра, то ничего не произойдет. Как раз та зона, в которой действует датчик движения, отвечающий за открывание дверей, и есть коллайдер. Вы входите в зону — двери открываются, выходите из зоны — и датчик уже никак не будет реагировать на ваше присутствие. Точно так же и в игре.
        Так вот, о коллайдерах. Предположим, мы импортировали в наш проект автомобиль и хотим сгенерировать для него коллайдер. Можно сгенерировать автоматически коллайдер для всего автомобиля, но тогда для каждой детали автомобиля — фары, уплотнителя, зеркала, покрышки — будет сгенерирован свой коллайдер.

        image

        Это абсолютно не оптимально. Безусловно, нам не нужно генерировать столь большое количество коллайдеров, достаточно ограничиться одним!

        image

        Обратите внимание, что это не тонкость. Стараться сэкономить память нужно везде. У вас есть какое-то место в игре, куда игрок не сможет попасть? Не генерируйте никакие коллайдеры для этого места вообще. У вас есть дверь, которую вы импортировали в проект из 3Ds max'а? Небось, она очень хорошо прорисована (сам сталкивался с тем, что у двери даже шурупы были прорисованы отдельным объектом), значит, создайте один box-коллайдер для всей двери — вы сэкономите много памяти! Поверьте, что вам эта сэкономленная память еще очень и очень пригодится.

        Сцены
        Отладка

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

        Структурирование

        При конструировании игры важно помнить о структурировании данных — немаловажном аспекте. Имеется ввиду, что все должно быть на своем месте. Создаете скрипты? — создайте папку для скриптов, там и храните их, с большой вероятностью, у вас будет не один скрипт, разбрасывать их по всему проекту не есть хорошо, сами потом будете мучиться. По своему опыту могу сказать, что вам точно понадобится создать папки со скриптами, звуковыми файлами, с GUI текстурами, материалами, анимациями, быть может, префабами и собственными моделями (импортированные из 3Ds max'а объекты лучше хранить именно в последней папке, дабы не разбрасывать все модели по проекту в хаотичном порядке). Когда вы создаете тот или иной скрипт, помните о том, что название переменных, классов и т.п. должны говорить все сами за себя. Если вы хотите создать скрипт для инвентаря (поднять предмет, использовать предмет), то лучше все скрипты однообразных действий (например, поднятия) начинать с ключевого слова, например: Catch ; Use , в таком случае вам будет легче ориентироваться в проекте, да и выглядит так намного симпатичнее.

        image

        Раздел 3. Практические советы

        Написание скриптов

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

        Видеоуроки

        К счастью, программный продукт Unity обновляется постоянно, но, увы, видеоуроки сами это делать не могут. Получается так, что огромное количество видеороликов, актуальных год назад, теряют свою актуальность и становятся, попросту, бесполезными.
        1 — здесь вы всегда найдете актуальные видеоуроки, понятное объяснение, детальный разбор скриптов и всех действий. Лучше этого канала пока что ничего не нашел. Если вы не имеете вообще никакого представления о создании игры, то вам однозначно нужно заглянуть на данный канал. 2 — серьезная команда, видеоуроков только, жаль, меньше, чем у 1. 3 — есть полезные вещи, жаль только, что видеоуроки стали почти неактуальными.

        Устранение ошибок

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

        image

        Это ошибки, если такие имеются, то игра не запустится:

        image

        image

        Раздел 4. Завершение работы

        Выводы

        Unity3d — очень гибкий движок, предоставляющий большую свободу действий пользователю. Чтобы упростить жизнь разработчику и потребителю, можно предпринять некоторые шаги для оптимизации своего проекта.
        Теперь мы, с заложенной базой знаний, можем спокойно приступать к созданию своего ультра-популярного приложения!

        Публикация игры
        *Оптимизация

        Если вы читаете данный подраздел, то либо вам просто интересно, что здесь написано, либо вы не прочитали NB! из раздела 2. Будем надеяться, что вы относитесь к первой категории. В данном подразделе еще раз хочется отметить то, что нужно сразу писать игру оптимальной, а не писать ее хоть как-то, и только затем отлаживать — это гиблый путь и поступать так не стоит. По поводу оптимизации — еще раз обратитесь ко второму разделу.

        Раздел 5. Дополнительная информация

        Теория графики
        Полезные ссылки
          — сайт ребят, которые делают отличные видеоуроки — сам толком не разобрался с каналом, но вроде бы очень полезный — здесь можно найти ссылки на 3D модели — работа с 3Ds max'ом — с помощью данного канала постиг азы 3Ds max'а, рекомендую к ознакомлению — можно найти полезные видео о 3Ds max'е
        Мнение

        Unity3d действительно мощный движок [4], с помощью которого можно создавать настоящие, работающие игры. Однако, как и у любого программного продукта, у него есть, по моему мнению, свои недостатки.

        º 2D графика
        Считаю, что это самый главный провал Unity. Полное отсутствие нормальной, адекватной работы с 2D графикой. Имеется ввиду создание 2D-игр. Создать такую игру можно, но придется сильно напрягаться и извращаться. Если разработчики Unity смогут доработать этот недостаток, то, это будет очень и очень хорошо.

        º Префабы
        Хотелось бы видеть больше префабов, каких-то готовых вещей, объектов, например, домов, предметов элементарного интерьера — столов, стульев. Да, это все есть в магазине Unity[5], но, увы, многие вещи там платны, а бесплатные продукты лишь изредка достойны внимания. Отдельный разговор про 3rd person controller — извините, но это просто неприемлемо:

        image

        º Оптимизация изображения
        Хотелось бы, чтобы работа с оптимизацией изображения под различные разрешения экрана была проще. Ведь достаточно чуть-чуть поработать с преобразованием координат и тогда не надо будет задумываться о том, что надо вычислять размеры, координаты через размер (разрешение) экрана.

        Источники информации

        Идейный вдохновитель, преподаватель и наставник

        — Григорьев Д. А., доцент кафедры Информатики СПбГУ Математико-Механического факультета.
        Что касается меня, обучаюсь на втором курсе МАТ-МЕХа, прохожу обучение по предмету Компьютерная графика (изучаем теорию графики и проектирование игр на платформе Unity3d).

        Платформа разработки 3D-контента в реальном времени позволяет художникам, дизайнерам и разработчикам работать вместе, создавая удивительные, иммерсивные и интерактивные приложения. Поддерживаются Windows, Mac и Linux.


        The Heretic: a short film created with Unity 2019.3

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

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


        Создайте один раз и разверните на чем угодно

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

        More Pathways to Success More than an Engine Campaign

        Больше, чем движок

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


        Создавайте потрясающие визуальные эффекты

        Создавайте прекрасный иммерсивный контент, который привлекает внимание пользователей с первых пикселей. С помощью Unity творческие команды могут быстро проводить итерации в одной среде. Редактор Unity используется для создания миров, анимации и игровых сцен, а также рендеринга. Благодаря поддержке таких инструментов, как Maya и Blender, художники и дизайнеры могут всегда держать руку на пульсе.


        Мощная, быстрая и гибкая платформа

        Unity - Полное руководство для начинающих по разработке игр 🔥

        🎮 Игры

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

        Вступление

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

        Почему Unity?

        Если вы хотите делать игры

        Когда дело доходит до разработки инди-игр, вариантов действительно очень мало. Если вы хотите создавать игры, есть три основных варианта: Unreal, Unity или GameMaker.

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

        В Unity есть множество очень успешных игр, таких как Escape from Tarkov (FPS), Monument Valley (Puzzler) и This War of Mine (Стратегия / Выживание).

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


        Если вы хотите прототипировать пользовательский опыт

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

        Unity полностью поддерживает VR и AR и, следовательно, может стать отличным инструментом для изучения архитектуры, автоматизации и моделирования с помощью клиентов.

        Окно редактора Unity

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

        Просмотр сцены: позволяет размещать и перемещать игровые объекты в сцене.

        Просмотр игры: предварительный просмотр того, как игрок будет видеть сцену с камеры.

        Инспектор: предоставьте подробную информацию о выбранном GameObject в сцене.

        Assets / Project: здесь хранятся все префабы, текстуры, модели, скрипты и т. Д.

        Иерархия: позволяет вложение и структурирование игровых объектов внутри сцены.

        Теперь мы готовы начать!

        Объекты Unity Game

        Что такое GameObjects

        Если у вас есть опыт веб-дизайна, вы можете думать о GameObjects как о элементах

        ! Чрезвычайно скучные контейнеры, но они легко расширяемы для создания сложной функциональности или визуальных эффектов.

        Буквально все, от эффектов частиц, камер, игроков, элементов пользовательского интерфейса… (список продолжается) — это GameObject.

        Создание иерархии

        для создания разнообразных и желаемых макетов или абстракций, вы можете сделать то же самое с игровыми объектами.Логика вложения игровых объектов во многом такая же, как и при веб-разработке, я приведу несколько примеров …

        Беспорядок и эффективность

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

        Позиционирование

        Unity Translation: вы создали группу дронов-помощников, которые летают вокруг игрока. На самом деле вы бы не стали писать код, чтобы они гонялись за игроком, поэтому вместо этого вы создаете их как дочерние элементы игрового объекта player.

        Встроенные компоненты Unity

        Компонентная модель актера

        Unity работает на основе модели компонентов акторов, проще говоря, GameObjects — это актеры, а компоненты — ваши скрипты.

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

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

        Ключевые встроенные компоненты

        Думаю, пришло время привести несколько примеров встроенных компонентов, предоставляемых движком Unity Games.

        • MeshFilter: позволяет назначать материалы для 3D-сетки GameObject.
        • MeshRender: позволяет назначать материалы 3D-сетке.
        • [Коробка | Mesh] Collider: позволяет обнаруживать GameObject во время столкновений.
        • Rigidbody: позволяет реалистичному физическому моделированию воздействовать на GameObjects с 3D-сетками и запускать события обнаружения на коллайдерах боксов.
        • Свет: освещает части вашей сцены.
        • Камера: определяет область просмотра игрока, которая будет прикреплена к GameObject.
        • Различные компоненты холста пользовательского интерфейса для отображения графического интерфейса пользователя

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

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

        Структура моноповедения

        Ключевые функции

        Все компоненты наследуются от класса MonoBehaviour. Он включает в себя несколько стандартных методов, главное:

        • void Start (), который вызывается всякий раз, когда объект, содержащий скрипт, создается в сцене. Это полезно в любое время, когда мы хотим выполнить некоторый код инициализации, например. установить экипировку игрока после того, как он появится в матче.
        • void Update (), который вызывается каждый кадр. Это то место, где будет выполняться основная часть кода, включающего пользовательский ввод, обновляющего различные свойства, такие как движение игрока в сцене.

        Переменные инспектора

        Часто мы хотим сделать компоненты максимально гибкими. Например, все оружие может иметь разный урон, скорострельность, has_sight и т. Д. Хотя все оружие, по сути, одно и то же, мы можем захотеть иметь возможность быстро создавать различные вариации с помощью редактора единства.

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

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

        Мы можем сделать это легко, просто объявив их как общедоступные переменные в теле компонента.

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

        Принятие пользовательского ввода

        Конечно, мы хотим, чтобы наша игра реагировала на ввод пользователя. Наиболее распространенные способы сделать это — использовать следующие методы в функции Update () компонента (или в любом другом месте, которое вам нравится):

        Управление игровыми объектами

        Трансформации

        Все GameObjects имеют свойство transform, которое позволяет выполнять различные полезные манипуляции с текущим игровым объектом.

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

        В общем, рекомендуется использовать локальное [Положение, Вращение], а не глобальное положение / поворот объекта. Обычно это упрощает перемещение объектов разумным образом, поскольку ось локального пространства будет ориентирована и центрирована на родительском объекте, а не на мировом начале координат и направлениях x, y, z.

        Преимущества локального пространства станут немного более очевидными с диаграммой!

        Если вам нужно преобразовать между локальным и мировым пространством (что часто бывает), вы можете использовать следующее:

        Создание новых игровых объектов

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

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

        По сути, это хранит шаблон объекта, который только что был в нашей сцене, со всеми теми же конфигурациями.

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

        Когда у нас есть эти сборные компоненты, мы можем назначить их переменным инспектора (как мы говорили ранее) для любого компонента в сцене, чтобы мы могли создавать новые GameObject, как указано в сборке, в любое время.

        Доступ к другим игровым объектам и компонентам

        После этого вы можете получить доступ к любому из общедоступных методов / переменных компонента, чтобы управлять GameObject. Это простой момент, однако на самом деле получить ссылку на GameObject можно несколькими способами …

        Доступ через переменную инспектора

        Это самый простой способ. Просто создайте общедоступную переменную для GameObject, как мы продемонстрировали ранее с префабами, и вручную перетащите ее на компонент через инспектор. Затем перейдите к переменной, как указано выше.

        Доступ через теги

        Мы можем пометить GameObjects или prefabs через инспектор, а затем использовать функции поиска игровых объектов, чтобы найти ссылки на них.

        Доступ через преобразование

        Доступ через SendMessage

        Raycasting

        Есть два сценария, в которых это может пригодиться (вероятно, их гораздо больше):

        Обнаружение столкновений

        Ранее мы упоминали компоненты Collider и Rigidbody, которые можно добавить к объекту. Правило для столкновений состоит в том, что один объект в столкновении должен иметь твердое тело, а другой — коллайдер (или оба имеют оба компонента). Обратите внимание, что при использовании raycasting лучи будут взаимодействовать только с объектами, к которым прикреплены компоненты коллайдера.

        После настройки в любом настраиваемом компоненте, прикрепленном к объекту, мы можем использовать методы OnCollisionEnter, OnCollisionStay и OnCollisionExit для реагирования на коллизии. Получив информацию о столкновении, мы можем получить ответственность за GameObject и использовать то, что мы узнали ранее, для взаимодействия с прикрепленными к нему компонентами.

        Следует отметить, что твердые тела обеспечивают физику, такую ​​как гравитация, для объектов, поэтому, если вы хотите отключить это, вам нужно будет включить is_kinematic .

        Расширенные возможности

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

        Создание графического интерфейса

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

        Расширение редактора Unity

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

        Анимация

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

        Материалы и PBR

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

        Совет новичкам по Unity

        Если вы планируете написать свою первую игру, не стоит недооценивать сложность и время, необходимое для написания даже самых тривиальных игр. Помните, что над большинством игр, которые выходят в Steam, команды работают над ними в течение многих лет!

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

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

        Хорошие ресурсы для разработки игр в Unity

        Сообщество разработчиков игр — одно из лучших среди всех, и в индустрии есть множество высококвалифицированных профессионалов, которые размещают контент бесплатно или почти бесплатно. В этой области требуются 3D-моделисты, концептуальные художники, геймдизайнеры, программисты и так далее. Я связал несколько отличных общих ресурсов, с которыми я столкнулся, для каждого из этих полей ниже:

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