с чего начать изучение unity3d
Первые шаги в Unity
Привет, Хабр. Материал подготовлен для тех, кто только начинает осваивать unity.
Unity — это один из самых популярных движков на данный момент. Составить ему конкуренцию может разве что Unreal Engine 4, но что у первого, что и у второго есть свои плюсы и свои минусы. Unity поддерживает почти 30 платформ, в их числе мобильные, виртуальная реальность, настольные компьютеры, консоли и так далее. Unity — это не просто хороший вариант для старта, это идеальный вариант для старта! Тут заложено использование гибкой модульной системы при создании сцен и персонажей в игре. Даже новичок способен создать крутой проект, используя готовые спрайты и конструктор движка.
Если же считаете, что готовы погрузиться с головой в «кирпичную систему» для продвинутых, то тут есть возможность настройки практически любого компонента. К примеру, разработка своего собственного шейдера или же переписать сетевой стек для потребностей своей игры.
Так с чего же начать работу на Unity и реализацию своего проекта?
Первым шагом будет установка ПО. На официальном сайте есть четыре разных версии программы для установки. Какую же выбрать? Всё по порядку. Версии представляют собой одинаковые функции движка.
Если вам интересно, вот что означают эти три варианта:
Unity Personal: эта версия бесплатна. Однако ваша компания должна зарабатывать менее 100 000 долларов за финансовый год. Еще одна загвоздка в том, что в каждой игре будет отображаться заставка «Сделано Unity», которую нельзя удалить.
Unity Plus: эта версия стоит 35 долларов в месяц. Он поставляется с инструментами отчетности о производительности, оболочкой Unity Pro и некоторыми дополнительными функциями. Эта версия требует, чтобы ваша компания зарабатывала менее 200 000 долларов в год, и она позволяет отключать или настраивать заставку «Сделано Unity».
Unity Pro: это самый высокий доступный уровень. Он стоит 125 долларов в месяц и поставляется с полезными сервисами Unity, профессиональными надстройками для iOS и Android и не имеет заставки. Ограничения по доходу тоже нет.
Также можно присмотреться к версии Enterprise, где стоимость подписки определяют пользовательские потребности.
Самые явные различия представленных версий — это то, что в Enterprise игры должны начинаться с заставки Unity. А в платных версиях можно удалить или загрузить другую заставку.
Плюс есть довольно интересные сервисы в Unity, к примеру, Cloud Build и Analytics. Естественно, они существуют только в платных версиях.
Для начала работы будет достаточно персональной версии, поэтому нажимаем кнопку «начать». Это приведёт к странице загрузки, нажимаем «принять условия и загрузить». Начнётся загрузка.
Первым установится Unity Hub
Unity Hub — это автономное приложение, которое упрощает процесс поиска, загрузки и управления вашими проектами и установками Unity.
Если вы запустите редактор Unity без установленного концентратора, Unity предложит вам установить его. Если у вас есть лицензия от предыдущей версии Unity, вы можете создать пустой проект из приглашения установки Hub. Если впоследствии вы попытаетесь создать или открыть проект из редактора Unity, Unity предложит установить Hub.
Создание проекта
Чтобы создать новый проект (и указать, в какой версии редактора его открыть), выполните одно из следующих действий:
Щелкните кнопку New. В строке заголовка диалогового окна «Новый проект» отображается версия редактора, которую должен использовать проект.
Щелкните стрелку раскрывающегося списка рядом с кнопкой «Создать», чтобы выбрать версию редактора, которую вы хотите использовать. Примечание: это раскрывающееся меню доступно только в том случае, если вы установили несколько версий редактора в хабе.
Вкладка «Проекты»
Чтобы просмотреть проекты, которыми управляет хаб, щелкните значок Проекты
Изучение интерфейса
Когда ваш проект загрузится, появится экран, заполненный информацией.
Ваш макет, вероятно, будет выглядеть так:
Если нет, нажмите кнопку «Макет» в правом верхнем углу и выберите 2 на 3 в раскрывающемся меню.
Каждый макет состоит из нескольких различных представлений. Вид просто панель информации, которую вы используете для управления. Например, есть представление для размещения объектов в вашем мире.
Вот как выглядит интерфейс, разбитый на отдельные представления:
Чтобы просмотреть список всех представлений, щелкните параметр «Окно» в строке меню.
Пользовательский интерфейс Unity полностью настраивается, поэтому вы можете добавлять, удалять и переупорядочивать представления по своему усмотрению.
При работе с Unity вы, как правило, захотите преобразовать представления в макет, который идеально подходит для данной задачи. Unity позволяет сохранять макеты для использования в будущем.
Представление Profiler позволяет анализировать вашу игру во время ее работы. К сожалению, профилировщик также блокирует просмотр игры, поэтому вы не сможете играть в игру, пока вы ее профилируете — не очень полезно.
Нажмите и удерживайте на вкладку Профили и перетащите его на вкладке Сцена выше.
Как видите, виды можно перемещать, закреплять и упорядочивать. Они также могут существовать вне редактора в виде плавающих окон.
Чтобы сохранить макет, выберите «Окно \ Макеты \ Сохранить макет…» и назовите его «Отладка».
Всякий раз, когда вам нужно получить доступ к этому конкретному макету, вы можете нажать кнопку «Макет» и выбрать «Отладка».
При нажатии вы увидите список всех ваших макетов.
Вы также можете удалить макеты. Если вы случайно выбросите стандартный макет в корзину, вы можете восстановить макеты по умолчанию.
Организация активов
Новички в Unity могут представить, что вы разрабатываете свою игру от начала до конца в Unity, включая написание кода, создание 3D-моделей и текстур и т. д.
На самом деле, лучше думать о Unity как об инструменте интеграции. Обычно вы пишете код или создаете 3D-модели или текстуры в отдельной программе и используете Unity, чтобы связать все вместе.
В своей игре у вас будет много ресурсов, поэтому очень важно организовать их таким образом, чтобы их было легко найти.
Представление, в котором вы импортируете и упорядочиваете активы, называется обозревателем проекта. Он имитирует организацию вашей файловой системы.
В предыдущих версиях Unity в каждом обозревателе проектов по умолчанию ничего не было. Вы можете думать о сцене как об уровне в вашей игре. Вы можете разделить все уровни на отдельные сцены или сохранить все в одной сцене. Выбор остается за вами.
В Диспетчере проектов выберите папку Assets и нажмите кнопку Create. В раскрывающемся меню выберите «Папка» и назовите ее «Модели». Это будет дом для всех ваших моделей. У вас может возникнуть соблазн создать папки и манипулировать файлами в файловой системе вместо обозревателя проекта. Не делайте этого!
Unity создает метаданные для каждого актива. Создание, изменение или удаление ресурсов в файловой системе может нарушить эти метаданные и вашу игру.
Создайте следующие папки: Animations, Materials, Prefabs, Presets, Scripts и Textures.
Ваш обозреватель проекта должен выглядеть так:
Лично я считаю, что большие значки папок отвлекают. Если у вас также есть предпочтение, вы можете увеличить или уменьшить размер с помощью ползунка в нижней части Диспетчера проектов.
Примечание. Все снимки экрана в этом руководстве с этого момента будут отображать самые маленькие настройки.
Наконец, вы можете изменить название актива. Например, ваша текущая сцена называется SampleScene. Выберите папку Scenes, а затем выберите файл SampleScene. Имя будет выделено. Один раз щелкните по нему еще раз, и вы напишете новое имя. Измените его на Main.
Вы можете сделать это с любой папкой или активом в Диспетчере проектов.
Если вам интересно узнать подробнее о формате обучения и программе, познакомиться с преподавателем курса — приглашаем на день открытых дверей онлайн. Регистрация здесь.
Unity3D для начинающих — Туториал 1
Предисловие
Хабралюди проявили некоторый интерес к Unity, поэтому открываю этим постом цикл туториалов, освещающих основные моменты работы с объектом (цикл неопределённой пока длительности — если кому окажется полезным продолжу).
Сразу говорю — чтобы снизить порог вхождения, рассказывать буду с рассчетом на людей, которые в жизни никогда ничем подобным не занимались. Так как самым простым в реализации основной функциональности будет сделать простенький шутер, с него и начнем. В этом уроке мы поговорим о том, как создать землю, небо, управляемого персонажа, о камере, через которую мы будем смотреть на небо и солнце и немного о стрельбе красными шарами по белым кубам. Итак, поехали…
Let’s get it started
Предстартовая подготовка
Для начала качаем и устанваливаем собственно сам Unity на офсайте, выбрав лицензию с ценником Free. Можно скачать и тридцатидневный триал UnityPro, это на ваш вкус.
При первом запуске перед вами предстанет окошко Project Wizard’а (у вас там будет пусто):
Выбираем папку назначения, жмём Create и ожидаем, пока небыстрый процесс импорта завершится. В конце перед нами предстанет пустое поле для экспериментов:
Если коротко пройтись по подписям на картинке, то инспектор префабов и ресурсов — это то место где хранятся добавленные в проект модели, текстуры, звуки, и собственно префабы — сохранённые для дальнейшего повторного использования объекты. Т.е. мы создали объект противника с прикрепленной к нему моделью и скриптом, управляющим его поведением, и хотим чтобы на каждом уровне нам не приходилось создавать его заново, и чтобы все копии этого объекта изменялись не вручную, по-отдельности, а все скопом. В таком случае мы сохраняем его как префаб, и когда в следующий раз нам понадобится поставить врага, просто перетаскиваем префаб на сцену; а изменение префаба меняет и все его копии.
Иерархия объектов на сцене — это список всех объектов на текущем уровне, показывающий заодно отношения Parent-Child.
Инспектор объектов показывает компоненты и их свойства выделенного в данный момент объекта — модели, текстуры, префаба.
Волшебные кнопки позволяют прямо в редакторе запустить сцену, погонять её на предмет багов, поставить на паузу чтобы проверить состояние каких-нибудь объектов и провести тонкую настройку и контроль путем покадрового выполнения.
В главном окне редактирования мы пользуемся всеми прелестями драг’н’дропа для расставления объектов по уровням.
Для начала посмотрим, что у нас уже есть в дефолтной сцене. Негусто, правда? Объект с говорящим названием Main Camera, по нажатию на название которого в иерарахии мы увидим конус viewport’а и маленькое окошко с видом из камеры.
Земля обетованная
Но возвращаясь к нашим баранам, создадим поверхность, по которой будем ходить. Моделей у нас нет пока, поэтому можно создать просто большую плоскость… Но мы создадим землю, то бишь Terrain — он покрасивше голой плоскости будет. Для этого в меню выбираем Terrain->Create Terrain. Вуаля!
Опять-таки, не очень впечатляет. Для начала, сменим размер земной тверди через Terrain->Set Resolution. По умолчанию параметры Length и Width равны 2000, т.е. 2 км на 2 км. Для тестовых побегушек нам столько не надо, потому пишем в эти поля 500 и 500 — более чем достаточно.
Теперь назначим земле текстуру. Для этого выделяем террейн (в главном окне или в иерархии), и наблюдаем доступные свойства в инспекторе объектов. Там мы увидим инструменты для редактирования террейнов (стандартные — поднять\опустить, сгладить, и т.д.). Можете сразу начать рисовать нужный вам ландшафт, но в данный момент нас интересует кнопка с кисточкой Paint the terrain texture. А на закладке, которую она открывает, кнопка Edit textures, в меню которой жмём Add Texture:
Откроется окошко с параметрами будущей текстуры. Находим среди них один со значением «None (Texture 2d)» и кликаем на шарик с точкой справа от этих слов. Откроется выбиралка текстуры из уже добавленных в ресурсы проекта. К слову, чтобы добавить текстуру в проект, достаточно её просто скопировать в папку проекта — юнити все сам подхватит. Импорт всего остального происходит анналогично а удаление ресурса из проекта означает физическое удаление с диска.
Выбираем нужную текстуру, например Grass(Hill). Можно добавить ещё несколько текстур, например Cliff (Layered Rock), и, пользуясь кистью, выбираемой чуть выше, раскрасить по своему усмотрению. У меня после предыдущих манипуляций получилось вот так:
Если мы в данный момент нажмем на кнопку «Play» вверху экрана, то вы увидите, скорее всего, кусок нашей плохо освещённой земли на голубом фоне. Но так ведь неинтересно, поэтому прежде чем продолжить, нам надо добавить на сцену освещение, симулирующее солнечное, и заменить голубой фон небом. Свет добавляется через главное меню, GameObject->Create other->Directional light. Затем, следуя картинке, нажимаем кнопку которая меняет стрелки-хелперы вокруг выделенного объекта на оси вращения. Тягая за эти оси мы, как ни странно, вращаем осветительный прибор так, чтобы земля покрасивше подсвечивалась.
Чтобы вместо голубого полотна над головой было небо, надо указать текстуру скайбокса (skybox — «небесная коробка», куб, на который изнутри натянута текстура, как правило — панорамная фотография неба, сделанная таким образом, что изнутри кажется, будто ты окружен шаром с этой текстурой. Именно так в большинстве игр и рисуется небо). Для этого заходим в меню Edit->Render Settings, находим свойство «Skybox material» и, как мы это делали с текстурой земли, жмем на кружок с точкой справа от него. Нам покажут материалы, имеющиеся в проекте (чтобы не ходить в дебри терминологии, будем считать что материал это текстура и то, как она будет отображаться — будет она прозрачной, или будет блестеть, и т.д.). Выбирайте любой со словом skybox, например sunny2 skybox. Отлично, теперь наш полигон выглядит поживее.
Управление и камера
Я долго думал, включать ли в первый туториал разбор скриптов и написание с нуля своей камеры и управления. И всё-таки решил пока это отложить. Сегодня мы просто соберём своего персонажа из уже готовых кусков, а в следующем туториале уже начну разбирать скрипты.
Вообще-то, в комплект Юнити входят два игровых объекта, дающих готовое, уже собранное решение для камеры и управления. Но я о них вам пока не скажу, чтобы был стимул собрать своими руками. 🙂
Для начала, создадим объект для игрока. Вернее, чтобы не плодить лишние скрипты, переименуем «Main Camera» в «player». Теперь, выделив камеру, в меню выберем Component->Physics->Character Controller. Character controller — это компонент, который обрабатывает положение объекта (вернее, персонажа) в пространстве: его движение, повороты, падения, прыжки и столкновения с другими объектами. Все это можно делать напрямую, без помощи этой обертки вокруг стандартных функций перемещения объектов и проверки коллизий, но тогда код реализации передвижения вырастает в разы, что плохо для первого знакомства с движком. А так, в общем-то, можно на первом уроке и не кодить 🙂
В качестве лирического отступления стоит рассказать о компонентах.
Любой предмет, который мы видим на сцене — это экземпляр класса с говорящим названием GameObject. Он имеет некоторое количество т.н. компонентов — в свою очередь, являющихся экземплярами своих классов. Каждый компонент выполняет некую утилитарную функцию. Так, у каждого GameObject должен быть компонент Transform, который занимается тем, что хранит текущие координаты, угол разворота и размеры объекта в трехмерном пространстве. Ну и заодно содержит методы для выполнения действий над положением объекта в этом пространстве: пермещение, развороты и т.д., т.е. когда мы в редакторе тянем объект за стрелки-управляторы, мы меняем координаты его трансформа.
А вот например компонент RigidBody занимается тем, что обрабатывает физическое поведение объекта: всё, что мы видим, когда бочка от выстрела падает на бок и катится — результат работы RigidBody. Который, кстати, не сможет правильно работать, если не назначить объекту компонент типа Collider, который хранит в себе трехмерную модель, по которой определяются столкновения объекта. Эта модель не отображается, но именно она, а не та что мы видим на экране во время игры, проверяется на столкновения с окружающим миром.
Если мы теперь поставим нашего player’а над поверхностью земли и включим Play, наша камера всё ещё будет стоять на месте. Так происходит потому, что Character Controller лишь обрабатывает поступающие к нему управляющие команды, сама они инициативы не проявляет. Чтобы разъяснить ей, что делать, драг-н-дропнем на player’a скрипт, который лежит в инспекторе префабов в папке Standart Assets\Character Controllers\Sources\Scripts и зовётся «CharacterMotor». Его задача — используя методы Character Controller осуществлять основную рутину передвижения: реализовывать действие гравитации, прыжки, вычислять текущую скорость и направление движения. Запуск уровня теперь заставит камеру игрока падать на землю — уже что-то.
Но мы всё еще стоим на месте: ведь у нас нет скрипта, который перехватывал нажатия клавиш и сообщал о них в CharacterMotor. Этим занимается лежащий в той же папке скрипт FPSInputController. Кидаем его на игрока, запускаем и ура — кнопки W, S, A, D теперь позволяют ходить, а пробел — прыгать! Но ходим-то мы всё как-то в одну сторону, вправо-влево да приставным шагом. Чтобы вертеть головой и идти куда глаза глядят, понадобится ещё один скрипт, оттуда же: MouseLook. Кидаем, запускаем — и получаем полноценное управление.
Теперь можно поиграться с переменными. Character Cоntroller установил вместе с собой Character Motor — в его-то свойствах и хранятся такие параметры, как Gravity, Max Forward Speed, Jumping Base Height и всякие другие. Вот они, все плюсы Инспектора — все основные свойства классов всегда на виду, даже в код лезть не надо.
UPD: продолжение, которое выпало из поста благодаря моей исключительной криворукости:
Стрельба по изредка движущимся мишеням
Бегать по собственноручно сделанным холмам, любовно раскрашенным аж тремя текстурами, конечно, весело. Но вскоре надоедает. Поэтому мы выберем в меню GameObject->Create other->Cube, разместим этот куб в воздухе рядом с игроком, в свойствах Transform у него укажем следующие параметры Scale (x, y, z): 3, 3, 3; и запустим уровень, чтобы посмотреть, что этот куб будет делать. Делать он не будет ровным счетом ничего, если честно. Но стоит, выделив этот куб, назначить ему, Component->Physics->Rigidbody, при следующем запуске мы увидим совсем другую картину. Куб падает, крутится, почти как настоящий, правда как картонный — масса его по умолчанию 1 кг, что для таких размеров маловато, но мы её пока трогать не будем.
Выделив куб, нажмём Ctrl+D (дублирование объекта), и с зажатым Ctrl потянем куб вверх до тех пор, пока кубы не будут расположены один над другим. Теперь у нас два совершенно одинаковых куба ровно друг над другом. Повторим эту процедуру кубов до 15, и посмотрим на падение Вавилонской башни.
Далее, создаем новый куб, но не назначаем ему Rigidbody. Из него мы сделаем ровную поверхность для удобства стрельбы. Задаем ему Scale: 150, 20, 150; и располагаем где угодно — главное разместить на нем нашу башню и игрока. У меня получилось так:
После этого перетаскиваем сферу из списка в иерархии на созданный нами префаб. Префаб становится голубым, а вместе с ним синеет и имя сферы на сцене — это означает, что она является клоном префаба. Переименовываем префаб из дефолтного имени в, допустим, prefab_bullet. Для красоты. Пуля готова!
public var bulletImpulse = 300;
public var shootSpeed = 1;
public var bullet : GameObject;
public var lastShotTime : float;
function Start() <
lastShotTime = 0;
>
if (Input.GetKey(KeyCode.Mouse0)) <
if (Time.time>(lastShotTime + shootSpeed)) <
var bull_clone : GameObject;
bull_clone = Instantiate(bullet, transform.position, transform.rotation);
Physics.IgnoreCollision(bull_clone.collider, collider);
bull_clone.rigidbody.AddForce(transform.forward*bulletImpulse, ForceMode.Impulse);
lastShotTime = Time.time;
Дальше сохраняем скрипт, и по отработанной схеме — перетаскиваем его из окна префабов на нашего player’а, что стоит посреди белой плоскости. Выделив его теперь, мы увидим… Вот что:
А это значит, что скрипты цепляются к объектам так же, как и компоненты, и управлять ими можно так же. Вернее, они и есть компоненты, но это сейчас несущественно. Существенно сейчас нажать кружок с точкой рядом с параметром Bullet и в открывшейся выбиралке найти наш префаб со сферой. Выбрав его в качестве пули, можно смело запускать уровень и наслаждаться стрельбой ядрами по картонным коробкам.
Если, конечно, НЛО не вмешалось в мои мысли и я не пропустил какой-то важный шаг.
Надеюсь, что я достаточно подробно осветил то, что надо было осветить, и не зацикливался на неважных мелочах. Пусть этот туториал и носит ознакомительный характер, хотелось бы верить, что он кому-то окажется реально полезен. Жду рациональной критики и пожеланий на следующий выпуск. Спасибо за внимание!
Пять обучающих материалов по Unity для новичков в игровой разработке
Вот некоторые из лучших видеоматериалов от наших любимых разработчиков контента, которые помогут вам освоить разработку игр в Unity.
Мир игровой разработки огромен и богат информацией. Не теряйтесь, ведь тут легко оказаться в море информации, таком глубоком, что вам будет сложно удерживать голову над водой. Обучающие видео — это отличный способ изучения новой информации без риска перегрузки. Мы подготовили коллекцию из пяти лучших видеоуроков о Unity от авторов с YouTube, которые помогут вам ознакомиться с инструментарием и освоиться в мире игровой разработки. Смотрите, слушайте и учитесь у профессионалов в Unity.
Увлекательные и полезные материалы по Unity на канале Brackeys будут интересны как начинающим, так и опытным разработчикам. Brackeys начал выпускать видеоуроки на YouTube в 2012 году. Небольшая команда занималась созданием игр в Unity с детства.
В этом видео под названием «Разработка первого шутера в Unity с помощью FPS Microgame!» рассказывается об одном из вариантов Unity Microgame, которые помогут новым пользователям приступить к работе над новыми проектами как можно быстрее. Brackeys загрузит сцену, покажет, как устроен пакет FPS Microgame, а также продемонстрирует возможности его настройки по собственному вкусу.
Сэм Догантимур, также известный как Sykoo, вот уже 5 лет делится своим опытом в разработке игр со зрителями YouTube. Он настолько хорош в преподавании Unity, что мы решили пригласить его в свою команду.
Он не только создает превосходные ролики об игровой разработке, но и, будучи евангелистом Unity, помогает другим развивать свои навыки и свои компании.
В ролике «Как стать игровым разработчиком в 2020 году!» он рассказывает об особенностях менталитета и о практическом опыте, которыми отличаются игровые разработчики.
Томас Браш — успешный инди-разработчик. Его игра Pinstripe, выпущенная в 2017 году, завоевала множество наград и получила оценку 5 из 5 в журнале Time. Выход его новой игры Neversong запланирован на май 2020 года.
Томас разрабатывает свои игры в Unity, и они отличаются великолепным визуальным стилем и красивой 2D-графикой. В ролике «Как разработать 2D-игру» он дает рекомендации по структуре игры и настройке Unity Editor, а также предлагает весьма изобретательные методы постановки камер, методы хранения файлов и советы по созданию ассетов.
Jonas Tyroller’s Youtube channel documents his journey into game development. Jonas dabbled in programming and game design in university, but he is essentially self-taught and proficient with Unity. You can watch his progress – from creating a simple game prototype with a few fun mechanics to contributing to a full city sim, among other solo projects.
In “How to make your first game today!” Jonas introduces you to the Editor and helps you build your first 3D game. That’s right: if you follow the instructions (which still apply to current builds of Unity), at the end you will have a playable game.
Для новичков у нас есть множество полезных обучающих материалов о Unity на YouTube.
Смотрите специальное видео о модификации наших проектов из серии Microgame. Изучите серию уроков по программированию для начинающих, чтобы ознакомиться с основами программирования для работы над вашей первой игрой. Невероятные возможности Unity непременно вдохновят вас!
Эти учебные материалы могут помочь (и обязательно помогут) вам приступить к творчеству в Unity. Вам останется лишь одно: открыть Editor и начать работу. Кто знает, к чему это приведет? Возможно, однажды вы тоже будете рассказывать другим начинающим разработчикам как создавать невероятные игры.