Основы движка Unity
Изучение Unity для начинающих / Урок #1 – Что такое Unity? Введение в Unity с нуля
Представляем вам видео курс по изучению движка Unity и работы с ним. За курс мы с нуля разберем базовый интерфейс Unity, научимся работать с основными функциями Unity и в конце курса создадим небольшую 3D игру на Unity 5. Курс рассчитан для начинающих в сфере создания игр.
Видеоурок
Полезные ссылки:
- Официальный сайт Unity ;
- Онлайн C# редактор кода .
Информация про Unity
Unity – это игровой движок, на котором строится большая часть современных игр на разных платформах. Посредством движка реально создавать игры, ориентированные на запуск на компьютерах (Windows, Linux, MacOS), мобильных телефонах, планшетных компьютерах (Android, iOS, Windows Phone) и даже игровых приставках PlayStation, Xbox, Nintendo.
Как создавать игры в Unity?
В основе Unity лежит компонентно-ориентированная концепция. По сути, любая игра состоит из массы объектов, разбавленных дополнительными компонентами. Для примера, во время создания платформера мы создаём GameObject, к нему дополнительно прикрепляем графическую составляющую, что отвечает за отображение персонажа, и управляющий компонент, он обеспечивает управление персонажем за счёт мыши, клавиатуры, джойстика или тачскрин. Движок не накладывает ограничения на количество подобных модулей. К GameObject можем добавить столько компонентов, сколько будет необходимо. Вся работа на движке строится на том самом создании GameObject и применение к ним подходящих компонентов.

Новичков может ввести в заблуждение видимая простота процесса, хотя это не так. Для создания уникальной и популярной игры придётся с нуля писать массу компонентов. Если точнее, в среде Юнити это называется скриптом. Родной язык создания скриптов – C#, но ещё частично задействуется JavaScript и Boo (обрезанный вариант Python).
Поддерживаемые платформы
Многие крупные проекты предпочитают Unity из-за огромного списка платформ совместимых с движком. Готовое приложение реально запустить на любой компьютерной операционной системе, популярных мобильных платформах и SmartTV. Что уж говорить, даже браузерные игры и приложения для специфических платформ (вроде Tizen OS) преимущественно разрабатываются на Юнити.
Однако, здесь не всё так гладко. При необходимости писать специфические алгоритмы, основанные на низкоуровневом коде, под тот же самый Андроид нужно иметь доскональные знания Java. Только по завершению работы с Java-кодом его придётся компоновать с Unity.

То же самое справедливо и в отношении iOS. Ещё одна особенность iOS, что под неё разрабатывать возможно только с компьютера или планшета от Apple. При отсутствии Macbook или аналогичного устройства выпуск игры быстро застопорится и Unity здесь вовсе не причём, Apple сама накладывает подобное ограничение. Вывод прост: если в планах есть iOS-разработка, заранее следует подобрать подходящее устройство для сборки.
Как и где разработать игру на движке?
Длительный процесс разработки игр можем проводить как в рамках Windows, так и Mac OS X. Уже существуют версии редактора под Linux, но рассчитывать на стабильную их работу пока что не приходится. Большую часть времени по созданию игры разработчик проводит внутри редактора Unity. Ещё приходится много времени писать код скриптов, его создавать можем либо в стандартном MonoDevelop, либо в любом редакторе стороннего разработчика. Сейчас активно пользуются Visual Studio, а также Sublime Text, но только при должной настройке.

Разработка игры
Мы изучим как создать свои 2D и 3D игры на Unity. Процесс создания 2Д и 3Д игр на Unity прост. Он разделяется на два этапа:
- построения дизайна через Unity;
- написание кода на основе языка C#.
Многие останавливаются лишь на вопросе «Как создавать игры на Unity?», так как далее не находят нужной информации и останавливаются. Мы же с вами за курс изучим интерфейс программы и научимся строить игры на Unity.
Примеры игр
Конечно же, перед изучением чего-либо хочется более точно понимать что вы сможете получить по итогу. По этой причине мы предлагаем взглянуть на несколько проектов, что были созданы на основе движка Unity.
Среди крупных проектов можно отметить следующие проекты:
- игра «Firewatch» с красивой и насыщенной графикой;
- проект игры про Рика и Морти в формате дополненной реальности (проект «Virtual Rick-ality»);
- игра «The Forest» про выживания в дикой местности;
- мобильный нуарный проект «Inside»;
- космическая игра «Kerbal Space Program».
Это лишь мизерная часть из тех проектов, которым стоило бы уделить время. На самом деле таковых проектов несчетное количество. Если вы решили делать игры, то начать изучать движок Unity это всегда хорошая затея.
Дополнительные курсы по Unity разработке
За курс мы с вами учимся делать игры на Unity, но не углубляемся в детальный процесс. Если вы хотите получить больше информации относительно разработки игр на Unity, то рекомендуем вам дополнительные курсы.
На нашем сайте вы можете найти более углубленный курс по Unity. В нем представлено множество важных концепций, что присутствуют в самом движке. Полный курс по языку Unity можно просмотреть здесь .
Также на сайте есть более углубленная программа по изучению разработки мобильных и компьютерных игр. Ознакомится с программой обучения по Unity можно по этой ссылке .
В ходе программы обучения вы научитесь делать как 2Д, так и 3Д игры на Unity. Игры будут разрабатывать под обе платформы: Андроид и iOS. За программу вы научитесь создавать анимации, дизайн, прописывать скрипты, добавлять рекламу и монетизацию и выполнять публикацию игр в магазины Google Play и App Store.
Задание к уроку
Установка Unity
Установите Unity и текстовый редактор для работы со скриптами.
В качестве текстового редактора можете использовать любую подходящую программу. Например: Visual Studio, Rider, Atom и так далее.
Посмотреть ответ
Установить Unity можно на официальном сайте. Урок по установке:
Чтобы установить среду разработки необходимо скачать одну из удобных вам программ: Visual Studio , MonoDevelop , Atom и так далее.
Уроки Unity C#

Представляем вам видеокурс по изучению языка C# в связке с игровым движком Unity. За курс мы с нуля рассмотрим множество функций, которые позволяют создавать игры через движок Unity. Курс рассчитан для начинающих, которые хотят научиться писать скрипты в Юнити.
Видеоурок
Полезные ссылки:
- Курс по изучению языка C# .
Информация про Unity
Unity является одним из наиболее популярных игровых движков. На его основе вы можете создавать как небольшие 2Д проекты, так и крупные 3Д игры с кинематографичными вставками, интересными функциями, графикой и анимацией.
Движок предоставляет графический и текстовый редактор для создания игр. В графическом редакторе выполнятся построение окружающего пространства. Такой редактор предлагает лишь разработку дизайна, но не функциональной части. Написание всех действий в игре происходит отдельно при помощи языка C#.

В Unity вы можете создать неограниченное количество скриптов, каждый из которых будет обрабатывать определенные действия в вашей игре: изменение цвета, передвижение игрока, изменение звука, настройка света и так далее. Написания кода в таких скриптах немного отличается от стандартного языка C#.
Отличия между C# и Unity C#
Unity предоставляет нечто в духе своей собственной оболочки для языка C#. Важно понимать, что в Unity не изобрели язык C# заново и не создали его клон. В движке используется стандартный язык C# , вот только он дополнен: функциями, классами, интерфейсами и прочими вещами от Unity.
Все действия что вы можете делать в обычном C#, вы можете также делать в Unity. Компания Unity при разработке своего движка написала большое количество: классов, методов, перечислений, интерфейсов и прочих вещей, которыми вы теперь можете пользоваться.
Получается, что изучение C# под Unity – это изучение встроенных в движок классов и их возможностей, что были описаны разработчиками данного движка.
Нужны ли знания C#?
А нужно ли в таком случае изучать базовый C# или проще сразу перейти к Юнити? Тут ответ однозначен. Вам 100% нужно изучить сперва язык C# , а лишь позже перейти к этому курсу. Дело в том, что все стандартные вещи: переменные, циклы, условия, массивы и прочее – всё это никто не отменял и со всем этим вам постоянно придется работать при написания кода в Юнити.
Из-за того что C# один, то нельзя только изучить С# под Unity. В таком случае вы получите лишь часть функционала.
Альтернативные языки для Unity
Ранее для движка существовало больше языков программирования. Многие вспомнят, что не так давно можно было писать на C# и JavaScript . Оба языка предоставляли схожий функционал и выбор оставался лишь за разработчик.
Сторожили могут вспомнить, что когда-то разработка велась на языке Boo. Это диалект языка Python . Подобная поддержка была быстро убрана.
В сети можно найти варианты для написания кода под Unity на других языках программирования. Хоть такие варианты и есть, но они вовсе не удобны и единственны верным решением есть написание кода на C# .
Сейчас многие новенькие движки предлагают на выбор сразу много языков программирования. На старте Юнити тоже предлагал много языков, но позже отказался от всех в пользу С#. Дело в том, что использования многих языков не оправдано, ведь для написания новой функции для движка, разработчикам нужно адаптировать её под все языки, что поддерживает движок. Это затратно и поэтому большинство движков работают только с одним единственным, выбранным для себя языком программирования.
Разработка игры
Мы изучим как создать свои 2D и 3D игры на Unity. Процесс создания 2Д и 3Д игр на Unity прост. Он разделяется на два этапа:
- построения дизайна через Unity;
- написание кода на основе языка C#.
Многие останавливаются лишь на вопросе «Как создавать игры на Unity?», так как далее не находят нужной информации и останавливаются. Мы же с вами за курс изучим интерфейс программы и научимся строить игры на Unity.
План курса
За курс мы будем изучать язык C# в связке с игровым движком Unity. Мы изучим базовый синтаксис C# под Unity, изучим основные библиотеки и поговорим про встроенные Unity функции для манипуляции проектом и объектами в нём.
К концу курса у вас будут хорошие знания по работе с Юнити и написанием функций для него. В конце курса мы даже разработаем небольшую игру, с применением всех полученных знаний.
Курсы по Unity разработке
За курс мы с вами научимся прописывать C# Unity код и изучим процесс построения функционала на основе Unity C#. Если вы хотите получить больше информации относительно разработки игр на Unity, то рекомендую вам нашу большую программу обучения по Unity.
В ходе программы обучения вы научитесь делать как 2Д, так и 3Д игры на Unity. Игры будут разрабатываться под обе платформы: Андроид и iOS. За программу вы научитесь создавать анимации, дизайн, прописывать скрипты, добавлять рекламу, монетизацию и выполнять публикацию игр в магазины Google Play и App Store.
Просмотреть курс обучения по Unity можно по этой ссылке .
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца
Базовые концепции Unity для программистов
Привет, Хабр! При проработке темы Unity мы нашли интересный блог, возможно, заслуживающий вашего более пристального внимания. Предлагаем вам перевод статьи о базовых концепциях Unity, также опубликованный на портале Medium
Если вы обладаете опытом программирования и пытаетесь вкатиться в разработку игр, порой бывает непросто найти такие учебные материалы, в которых в достаточной степени объясняется необходимый контекст. Вероятно, придется выбирать между материалами, в одних из которых описана парадигма ООП, в других — язык C# и концепции Unity, либо сразу начинать с продвинутых руководств; в последнем случае придется самостоятельно дедуктивно выводить базовые концепции.
Поэтому, чтобы отчасти заполнить этот пробел, я решил написать серию статей Unity for Software Engineers. Это первая из них. Статья рассчитана на читателей, имеющих представление о программировании и программной архитектуре, в особенности на тех, кому близок тот же подход к обучению, что и мне: начинать с основ и постепенно идти вверх.
Я начал путь в программировании около 17 лет назад, открыв для себя Game Maker. Многие часы потратил на самостоятельное программирование маленьких игр и инструментов, в процессе всерьез увлекшись программированием.
Однако с тех пор ландшафт игровой разработки серьезно изменился. Когда я попробовал Unity после долгой паузы с игровой разработкой, мне больше всего хотелось понять базовые концепции: из каких кирпичиков строится игра в Unity? Что нужно знать о принципах представления этих кирпичиков в памяти или на диске? Как организован идиоматический код? Какие паттерны предпочтительны?
Сцена
Сцена – это самый крупный блок, описывающий организацию объектов в памяти. В сценах содержатся объекты, из которых состоит ваша игра.
В базовом случае сцена представляет отдельно взятый уровень вашей игры, где в любой конкретный момент времени загружена одна сцена. В более продвинутых сценариях у вас одновременно могут быть активны две или более сцен. В таком случае сцены можно дополнительно загружать в память или выгружать. Особенно удобно загружать во время геймплея несколько сцен, когда строишь крупномасштабный мир; когда держишь отдаленные области игрового мира на диске, а не в памяти, проще выдерживать стоящие перед вами требования по производительности.

Редактор сцен Unity, в котором загружена задаваемая по умолчанию пустая сцена в режиме 3D. В пустых сценах Unity3D по умолчанию содержатся объекты Main Camera (Главная Камера) и Directional light (Направленный свет).

Пример сцены в редакторе Unity; здесь выделено несколько объектов. Такое представление сцены можно использовать для редактирования уровней в игре.
Каждый игровой объект в Unity должен находиться в сцене.
Игровые объекты
Игровой Объект (в коде GameObject ) – один из базовых кирпичиков, из которых строится игра.
В виде игровых объектов можно представлять как физические сущности, наблюдаемые в игре (напр., персонаж, грунт, дерево, ландшафт, свет, оружие, пуля, взрыв) так и метафизические (напр., менеджер снаряжения, контроллер мультиплеерного режима, т.д.).
У каждого игрового объекта есть значения положения и поворота. Для метафизических объектов они не имеют значения.
Допускается вложение игровых объектов друг в друга. Положение и поворот каждого объекта отсчитывается относительно его родительского объекта. Объект, расположенный непосредственно в сцене, позиционируется относительно «мировых координат».

Группа объектов, совместно вложенных в сцене и объединенных в пустом объекте “Interior_Props”, сделано в целях структурирования
Есть много причин, по которым вам может понадобиться вложение объектов. Например, вы можете решить, что со структурной точки зрения будет целесообразно поместить всю вашу «окружающую среду» (например, отдельные элементы, из которых состоит город или деревня) в пустой родительский объект. Таким образом, окружающую среду можно «компактифицировать» и вместе со всем представлением данной сцены перенести куда требуется при разработке игры.

Группа объектов, вложенных в объект «игрок». Здесь мы видим оружие игрока, его аватарку и различные элементы пользовательского интерфейса, отображаемые вокруг игрока
Вложение объектов может быть значимым и с функциональной точки зрения. Например, в объекте «Car» может содержаться код, управляющий как скоростью, так и поворотами машины в целом. Но у него могут быть отдельные дочерние объекты, представляющие четыре колеса (причем, все колеса будут крутиться независимо), корпус машины, окна, т.д. При перемещении родительского объекта «Car» будут двигаться и все его дочерние объекты, сохраняющие ориентацию относительно родительского объекта и относительно друг друга. Например, мы можем запланировать, что персонаж открывает дверцу, и это действие касается именно дверцы, а не всей машины.
Компоненты (и моноповедения)

Объект «Warrior» с предыдущего скриншота показан над окном «Инспектор» в интерфейсе Unity. Каждый из проиллюстрированных разделов (напр., Animator, Rigidbody, Collider) – это компоненты, слагающие этот объект
Каждый игровой объект состоит из компонентов.
Компонент реализует четко определенный набор поведений, необходимых, чтобы мог выполниться GameObject . Все, благодаря чему объект получается таким, каков он есть — это вклад компонентов, из которых он состоит:
- У единственного «видимого» элемента машины будет компонент Renderer, который отрисовывает машину и, вероятно, компонент Collider, задающий для нее границы столкновений.
- Если машина представляет персонажа, то у самого объекта car может быть Player Input Controller (Контроллер ввода от персонажа), принимающий все события, связанные с нажатиями клавиш, и транслирующий их в код, отвечающий за движение машины.
В коде есть MonoBehavior , вездесущий родительский класс для представления компонентов. Большинство невстроенных компонентов будут наследовать от MonoBehavior , который, в свою очередь, наследует от Behavior и Component , соответственно.
- Все объекты, обладающие здоровьем, будь то Player (Игрок) или Enemy (Враг) могут иметь компонент LivingObject , задающий исходное значение здоровья, принимающий урон и приводящий в исполнение смерть, когда объект умирает.
- Кроме того, у игрока может быть компонент ввода, контролирующий сообщаемые ему движения, а у врага может быть аналогичный компонент, реализованный при помощи искусственного интеллекта.
Как вы догадываетесь, компоненты также могут предоставлять и публичные методы. Другие компоненты могут принимать ссылку на данный и вызывать эти публичные методы.
Ресурсы
Ресурсы – это расположенные на диске сущности, из которых состоит игровой проект. К ним относятся сети (модели), текстуры, спрайты, звуки и другие ресурсы.
Когда ваши сцены сериализуются на диск, система представляет их в виде ресурсов, состоящих из игровых объектов внутри них. В следующем разделе мы также рассмотрим, как превратить часто переиспользуемые игровые объекты в ресурс под названием «шаблонные экземпляры» (prefab).

Также ресурсы могут представлять менее «осязаемые» объекты, например, карты контроля ввода, графические настройки, строковые базы данных для интернационализации и многое другое. Также можно создавать собственные типы ресурсов при помощи ScriptableObjects. Вот статья о том, как сохранять такие вещи.
Для проекта, находящегося в разработке, ресурсы – это ключевая информационная составляющая базы кода, наряду с кодом как таковым.
В готовом пакете с игрой будет содержаться большинство ваших ресурсов. Они будут сохранены на диске на том устройстве, где установлена игра.
Шаблонные экземпляры
Игровые объекты, их компоненты и параметры ввода существуют в сцене как отдельные экземпляры. Но что, если объекты определенного класса то и дело повторяются? Такие объекты можно оформить в виде шаблонов, каждый из которых – фактически, объект в виде ресурса.
Шаблоны экземпляров в сцене поддаются локальным модификациям, позволяющим отличать их друг от друга (например, если объект дерево выполнен в виде шаблона, то можно сделать экземпляры деревьев разной высоты). Все экземпляры, выполненные по шаблону, наследуют от него и переопределяют данные шаблона.
Вложенные шаблоны
Начиная с Unity 2018.3, поддерживается вложение шаблонов, чего и следовало ожидать:
- Родительский объект с дочерними объектами, представленными в виде шаблонов, сам может быть представлен в виде шаблона. Внутри родительского шаблона дочерний шаблон допускает собственные модификации. В сцене инстанцируется сразу вся иерархия шаблонов, а поверх нее также могут надстраиваться модификации, специфичные для конкретной сцены.
- Шаблонный экземпляр, находящийся в сцене и снабженный собственными локальными модификациями, может быть сохранен как самостоятельный ресурс «Prefab Variant». Этот вариант представляет собой шаблонный ресурс, наследующий от другого шаблона, поверх которого применены дополнительные модификации.
Сериализация и десериализация
Все ресурсы, сцены и объекты вашего проекта долговременно сохраняются на диске. При редактировании игры эти объекты загружаются в память, а затем сохраняются обратно на диск с помощью системы сериализации, действующей в Unity. При тестовых прогонах игры объекты и сцены, находящиеся в памяти, загружаются при помощи одной и той же системы сериализации. Эта система также соотносит ресурсы, находящиеся в скомпилированном пакете, с загруженными/выгруженными объектами сцены в памяти.
Поток сериализации/десериализации, действующий в движке Unity, загружает в память ресурсы, расположенные на диске (в вашем проекте: для редактирования или тестового прогона игры, либо в самой игре, при загрузке сцены) и отвечает за сохранение состояния отредактированных вами объектов и компонентов обратно в соответствующие сцены и шаблонные экземпляры.
Следовательно, система сериализации также является ключевым элементом работы с редактором Unity. Чтобы MonoBehavior мог принять ввод при конструировании сцены в ходе ее инициализации, эти поля должны быть сериализованы.
Большинство базовых типов Unity, в частности, GameObject , MonoBehavior и ресурсы поддаются сериализации и могут получать исходные значения при создании прямо из редактора Unity. Публичные поля в вашем MonoBehavior сериализуются по умолчанию (если относятся к сериализуемому типу), а приватные поля для этого сначала нужно пометить атрибутом Unity [SerializeField] , и тогда они тоже могут быть сериализованы.

Скриншот игры Chaos Reborn производства Snapshot Games, 2015 год. BY-CC-SA 3.0
Заключение
Выше мы рассмотрели основные структурные концепции, используемые в архитектуре игр Unity. Почитав подробнее о них, а также о том, как хранимые на диски ресурсы соотносятся с представлениями этих ресурсов в памяти, вы должны получить представление о движке, после чего можно переходить к изучению более продвинутых руководств.
- Блог компании Издательский дом «Питер»
- Программирование
- Разработка игр
- C#
- Unity
Научитесь программированию в Unity
Хотите программировать собственные компьютерные игры? Начните с бесплатных наборов и обучающих материалов по программированию на Unity Learn, а также не забывайте про наше замечательное сообщество.

Unity FPS Microgame
Программируйте игры с Unity
Новички могут загрузить Unity бесплатно и начать с готовых ресурсов Unity Microgame и Mod. Затем углубите знания с помощью обучающих материалов и изучите структуру C#, языка программирования игр в Unity. Научитесь разрабатывать простые скрипты на C# для программирования игрового процесса, механики, визуальных эффектов, систем ИИ и других элементов.

Создавайте красивые игры
Реализуйте свои способности к программированию в Unity! Это может стать началом вашей успешной карьеры. Unity — самая популярная платформа разработки игр в мире: 50% всех мобильных игр созданы в Unity! Профессия Unity-разработчика находится в первой десятке по росту востребованности в США согласно данным LinkedIn.

Introduction to C# scripting in Unity
Что такое C#?
Скрипты в Unity разрабатываются на языке C# (произносится как «си-шарп»), который имеет богатые возможности и прост в изучении. Предлагаем вашему вниманию простое и понятное введение в программировании на C# в Unity, которое также включает информацию о базовом синтаксисе языка, то есть о переменных, функциях и классах.

Unity Creator Kit: Code
Создайте свой первый скрипт в Unity
Наборы Creator Kit — это простые игровые проекты, доступные на Unity Learn. Каждый из них можно изучить и освоить за несколько часов В наборе Creator Kit для начинающих программистов вы познакомитесь с основами разработки скриптов на C# для Unity в контексте игры жанра экшен-RPG.

Create with Code course from Unity
Полный курс: Create with Code in Unity
Create with Code — это официальный вводный курс Unity по программированию, содержащий более 37 часов насыщенного образовательного контента. В процессе разработки прототипа, решения задач по программированию и ответов на вопросы вы освоите базовые принципы программирования на примере разработки собственного игрового проекта на C# с нуля.
Другие способы учиться программированию в Unity

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