Оглавление
- Введение
- Публикация игры
- Добавление объекта
- Задачи юнити разработчика
- О сценах
- Настройка триггеров
- Unitystudy
- Краткая выжимка советов
- И чем Unity не является
- Где получить опыт Юнити-разработки
- Онлайн образование «Отус»
- Обнаружение столкновений
- Открытое образование
- Структура моноповедения
- Skill Factory
- Работа со скриптами
- Что нужно знать, чтобы стать разработчиком игр на Unity
- Создание проекта
- Заключение
- Вывод сообщения в консоль Unity
Введение
Слово предупреждения перед началом — данный текст не является самым исчерпывающим и всеохватывающим руководством по написанию скриптов в Unity. Данное руководство предназначено для человека, который хочет использовать Unity и который не имеет никаких знаний о каком-либо виде программирования. Используйте информацию отсюда, чтобы получить начальный опыт и отбросить некоторые опасения при добавлении скриптов к своим игровым объектам.
Написание скриптов, или программирование вообще, изучается на самых первых этапах, особенно полными новичками. Скорее всего, вам необходимо преодолеть некоторые неоправданные страхи относительно того, насколько удивительно трудным кажется написание скриптов. Основы использования скриптов Unity на самом деле не так и сложны. Мы делаем некоторые каждодневные вещи, которые похожи на последовательные процедуры в скриптах.
Существует множество книг, руководств и уроков по программированию, которые могут показать вам, как на самом деле разобраться в деталях. Также имеется множество видео-уроков для изучения Unity, и они почти все обучают основам написания скриптов. После прохождения всех этапов в данном руководстве, вы почувствуете себя более комфортнее, изучая подобные уроки. По крайней мере, у вас появится основное понимание того, что говорят другие авторы.
Я сам новичок в Unity. Я также знаю о том, что значит, когда нравится изучать и другие языки программирования. Я должен был пройти через беспорядок, как и вы. Я надеюсь, что данное руководство прояснит основы написания скриптов, которые я изучил, и я надеюсь, что обучение через «призму новичка» просветит вас тоже.
Уроки с первого по седьмой для полных новичков, для тех, кто не имеет абсолютно никакого представления о программировании вообще. Я на самом деле рассказываю о низком уровне и основах. Я просто стараюсь объяснить основные понятия на примере каждодневных жизненных ситуаций. Я не хочу, чтобы вы всегда имели расплывчатое пятно в своем сознании, которое бы заставило вас сдаться.
Уроки восьмой и выше фактически начинают рассматривать применение концепции написания скриптов в Unity.
Кажется, что большая часть начинающих может довольно легко узнать о том, как пользоваться Unity, это в первую очередь касается работы скриптов, которых они так боятся. Данное руководство для новичков предполагает, что вы на собственном опыте изучили из других источников, как в общих формах обращаться с редактором Unity, даже просто работая с файлами ресурсов. Это руководство только об изучении основ по работе со скриптами.
Публикация игры
Большим плюсом выбора Unity — кроссплатформенность, что позволяет один проект выпустить на всех желаемых платформах (Android, iOS,PC,WebGl и др). К моменту написания статьи игра была опубликована только для Android в Google Play Market, но не за горами ios в Apple Store.
Какие «подводные камни» имеются?
Технически публикация приложения в Google Play Market не составляет никакого труда — всё интуитивно понятно и легко. Пройти проверку по возрастному рейтингу, загрузить картинки из игры, логотип и впринципе все готово.
Политика конфиденциальности
Для публикации она не является необходимым элементом, однако, если в вашем приложении имеется реклама или внутриигровые покупки, то в кратчайшие сроки стоит обзавестись данной «бумажкой» и указать сссылку на неё в Google Play Console. К счастью, есть моножество ресурсов, которые генерирует данный документ за считанные секунды и сразу предлагают разместить на их сайте, удовлетворяя запросам гугла.Если проигнорировать предупреждения от гугл, что у вас отсутствует политика конфидециальности, то приложение могут легко снять с публикации.
Совет: Не откладывайте на потом этот пункт, делайте его параллельно с публикацией!
Идентификатор клиента OAuth
Если у вас в игре имеется система достижений, рейтинга от гугл или вы хотя бы сохраняете данные игры в облаке от гугл, то необходимо, чтобы пользователь проходил процесс авторизации, используя гугл аккаунт, а значит, предоставлял некоторые разрешения на управления его данными. Теперь по порядку. При настройке игровых сервисов в Google Play Console, необходимо: создать приложение для авторизации пользователя в Google Cloud Platforms, настроить учетные данные для идентификатора клиента OAuth и Окно запроса доступа OAuth. Пожалуй, это главный «подводный камень».Сложность состоит не в его первоначальной настройке, чтобы сервисы исправно работали, а в том чтобы приложение было опубликовано и не имело ограничений по количеству пользователей. Если вы намерены создавать крупнобюджетный проект, который будет привлекать тысячи игроков, то вам придется обязательно пройти этот этап.
Сайт игры
Это не является обязательным пунктом, но лучше сделать сайт, где будут размещены новости вашего проекта, а так же политика конфиденциальности и прочие материалы для ознакомления. Оказывается в 2021 году сделать легкий и простой сайт достаточно просто. С шаблонами для разработки сайтов в Word Press, не долго думая, я останавливаюсь на нем. Для сайта необходим хостинг и собственный домен. Взвесив все «за» и «против», решил потратить пару тысяч рублей на его аренду, сроком на 48 месяцев и не «париться». В сети огромное количество предложений, так что проблем с этим тоже не было. Пару часов уходит на его настройку, и еще пару часов на наполнение его контентом. И вот уже есть свой собственный сайт для игры!
Совет: Чтобы получить заветную галочку во вкладке Окно запроса доступа OAuth в Google Cloud Platforms, иметь сайт игры и свой домен , где так же будет размещена политика конфиденциальности — является обязательным пунктом!
Совет: Так же, если используете рекламу от Google Admob, то сайт тоже необходим. В корневую папку вашего сайта добавляется файл app-ads.txt. Это позволяет рекламодателям понять, какие источники объявлений имеют право продавать рекламный инвентарь. Если не пройти авторизацию, то доход с рекламы будет сильно снижен!
GDPR
Еще одно бюрократическое препятствие осталось, на пути для публикации. Если ваше приложение имеет рекламу, то она может быть персонализированной, а значит ваше приложение собирает данные пользователей, чтобы успешно показывать рекламу. GDPR — (General Data Protection Regulation) — это закон, принятый Европейским Парламентом, который описывает правила защиты данных для граждан ЕС. Это значит,чтобы показывать персональну рекламу, необходимо перед первым запуском вашей игры, пользователь должен принять соглашение, что ознакомлен с политикой конфиденциальности вашего приложения, а так же прочитать в каких целях будет использоваться его персональные данные и дать согласие/отказаться на их обработку. Разумееется это распространяется на резидентов из стран ЕС.
После выполнения всех выше изложенных пунктов, мое приложение успешно опубликовано в Google Play Market и не знает никаких проблем.
Добавление объекта
Объекты на экран Scene можно добавить из Asset Store. Для этого на панели инструментов нужно кликнуть на вкладку Window –> General –> Asset Store.
В строке поиска можно по названиям найти нужные компоненты, например, сет Free Platform Game Assets.
Как и другие ассеты, он загружается с помощью кнопки Import.
Перед загрузкой появится список всех компонентов, которые содержит этот пакет; некоторые из них можно исключить. Если в списке есть персонажи, текстуры или другие элементы, которые вам не нужны, можно просто снять галочки, и пакет загрузится без них.
После установки все ассеты будут доступны в окне Project. Теперь можно комбинировать и перемещать эти объекты, менять их форму, причем сделать это можно с помощью мыши или горячих клавиш, не написав ни одной строчки кода. Например, из перечня платформ самых разных видов можно выбрать одну и мышкой перетащить ее в рабочую область.
Шаг 2. Перенести в область Scene
Задачи юнити разработчика
Основная обязанность unity разработчика — создание игр для компьютеров и мобильных устройств, участие в проекте, включая тестирование, модификацию, поддержку и обновления игр.
Также разработчик выполняет и другие задачи:
создание геймдизайна: игровой контент и правила для персонажей;
составление шейдеров — программа для видеокарты, которая позволяет реализовать разные спецэффекты: преломление, затенение, рассеяние света и другие характеристики;
использование трехмерной графики 3D моделирования для игр;
подготовка анимации и графики;
понимание математики и физики (это важно как в процессе работы, так и при изучении С#).
О сценах
Все, что выполняется в вашей игре, существует в сцене. Когда вы упаковываете игру для какой-то платформы, конечный продукт представляет собой одну или более сцен плюс любой добавленный вами код, специфичный для конкретной платформы. Количество сцен в проекте не ограниченно. Сцену можно рассматривать как уровень в игре, хотя в одном файле сцены может быть несколько уровней — достаточно перемещать игрока (камеру) в другие позиции сцены. Скачивая сторонние пакеты или даже примеры игр из магазина ресурсов, вы обычно должны найти файлы сцен, чтобы открыть их в своем проекте. Файл сцены содержит всевозможные метаданные о ресурсах, используемых в проекте для текущей сцены и ее свойств
Важно почаще сохранять сцену при разработке нажатием клавиш Ctrl+S, как и в любом другом инструментарии
Как правило, Unity открывает последнюю сцену, с которой вы работали, хотя иногда, когда Unity открывает проект, создается новая пустая сцена, и вам придется искать сцену в Project Explorer
Новичков это сбивает с толку, но важно помнить об этом, если вы вдруг открыли свой последний проект и не можете понять, куда подевалась вся ваша работа! Расслабьтесь, вы найдете искомое в файле сцены, который вы сохранили в своем проекте. Вы можете искать все сцены в проекте, щелкнув значок, показанный на рис
4, и выбрав в списке Scene.
Рис. 4. Фильтрация сцен в проекте
В сцене вы ничего не увидите без камеры и ничего не услышите без компонента Audio Listener, подключенного к какому-либо GameObject. Но заметьте, что в любой новой сцене Unity всегда создает камеру с подключенным к ней компонентом Audio Listener.
Настройка триггеров
Для понимания сути триггеров важно усвоить, что такое коллайдер (Collider). Это компонент, который присваивается объекту в пространстве игры, задает форму и делает его твердым, недоступным для прохождения сквозь него
Например, если мы разместим монетку в 2D-пространстве и захотим сделать так, чтобы она упала на платформу, то без использования компонента Collider ничего не получится — монетка пролетит сквозь платформу.
Поэтому обоим объектам необходимо присвоить компонент Box Collider 2D — это тонкая зеленая линия, которая обводит элементы по контуру, и за счет этой рамки они становятся твердыми, то есть один не может пройти сквозь другой.
Так объекты обязательно соприкоснутся и монета встанет на платформу.
Триггер (Trigger) — это пространство на карте, при попадании объекта в которое происходит действие; он тоже обводит объект или область в пространстве по краям. По сути, это тот же коллайдер, только триггер позволяет объектам проходить внутрь этой области. Представьте, что на ту же самую платформу вместе с коллайдером наброшен триггер, и при попадании персонажа внутрь триггерной области активируется телепорт — персонажа перебрасывает в другую точку карты.
Чтобы создать триггер, нужно накинуть тот же самый компонент коллайдера, но поставить галочку Is Trigger.
Триггеры распознают три варианта взаимодействия области на карте и объекта:
- OnTriggerEnter — объект зашел в зону;
- OnTriggerStay — объект находится в зоне;
- OnTriggerExit — объект покинул зону.
Unitystudy
Преимущество курсов в Unitystudy:
- Полноценная информация
- Онлайн-поддержка учеников
- Офлайн-обучение без интернета
- Быстрый старт в геймдеве
- Обучение с самого нуля
Курсы:
- Unity Старт — это первый курс обучения на пути разработчика игр. Данный курс предназначен для тех, кто хочет начать создавать свои игры, но при этом не имеет никаких начальных знаний в среде разработки Unity3D и программировании на языке C#. Курс создан для новичков, которые хотят попробовать себя в создании игр с самым популярным игровым движком в мире — Unity. Пройдя этот курс вы получите фундамент, который поможет вам начать полноценный путь разработчика игр.
- Курс программирования на C#. В этом курсе вы пройдете полный цикл разработки 3D игр — от задумки и создания пустого проекта в Unity, до реализации полноценной, рабочей игры. Применяя полученные знания из первого курса, продолжите изучать программирование на C#, дополняя их более сложными и интересными примерами. Вы узнаете, как работать с материалами, звуками, спец. эффектами и освещением в ваших играх. Будете использовать физику и научитесь основам создания качественного геймплея. Познакомитесь с основами игрового дизайна и многое другое.
- «Unity Углубленный». В ходе этого курса создадите с самого нуля еще одну игру. На этот раз механика игры сложнее и интереснее — это линейный шутер. Вы научитесь создавать красивый ландшафт для своей игры, визуально настраивать сцену, добавлять skybox, создавать собственные эффекты, работать с уникальными 3D моделями, настроите кроссплатформенное управление, а также начнете изучение UI (user interface) системы в Unity.
- Пиксель арт графика. Цель этого курса научить вас основам и дать понимание над процессом создания графики для игр, особенно популярной сейчас пиксельной графики.
- Пиксель арт фоны для игр. Научиться рисовать красивые фоны для игр не так трудно как кажется, особенно если дело касается пиксель арта! Используя фундаментальные знания и пошаговые инструкции из этого курса вы самостоятельно сможете рисовать отличные бэкграунды для своих игр и даже на заказ. Часть фонов из этого курса основаны на реально существующих работах крутых пиксель арт художников.
- Low Poly графики для игр. В этом курсе вы узнаете как создавать стилизованные лоу поли модели окружения всего за несколько минут, научитесь накладывать красивые градиенты, исправлять частые ошибки новичков и правильно экспортировать графику в Unity.
Краткая выжимка советов
Изучите рынок и определитесь с направлением и жанром игры. Главное не стройте в начале «наполеоновские» планы, которые могут и не реализоваться!
Распишите план действий и пытайтесь четко следовать ему, попутно внося небольшие правки. Старайтесь укладываться в установленные планом сроки.
Обязательно спрашивайте мнение ваших близких и друзей о вашей игре на протяжении всей разработки.
Не стесняйтесь приобретать ресурсы для ускорения разработки и повышения качества своего проекта.
Старайтесь писать программный код максимально понятный вам и другим людям, чтобы его можно было прочитать спустя месяцы разработки и понять его смысл.
Изучите базовые навыки работы с редактированием изображений и звуков.
Соорудите себе в браузере пул полезных закладок с библиотекой различных ресурсов, имея быстрый к ним доступ.
Научитесь использовать на базовом уровне Git
Незаменимый помощник при разработке игры, чтобы контролировать внесенные изменения.
Последнее и наверно самое важное. Никогда не сдавайтесь , верьте в себя, упорно трудитесь и рано или поздно, но у вас все обязательно получится! Если получилось у меня и миллионов других начинающих разработчиков данного ремесла, то почему не должно получится и у вас!?
И чем Unity не является
Я сомневаюсь, что нужно описывать все, чем Unity не является. Однако Unity по умолчанию не является системой, в которой проектируют двухмерные ресурсы и трехмерные модели (кроме террейнов). Вы можете вставить группу зомби в сцену и управлять ими, но создать самих зомби с помощью инструментария Unity, предлагаемого по умолчанию, нельзя. В этом смысле Unity не является инструментом создания ресурсов, подобным Autodesk Maya, 3DSMax, Blender или даже Adobe Photoshop. Однако существует минимум один сторонний плагин (ProBuilder) для моделирования трехмерных компонентов прямо в среде Unity; также имеются плагины для построения двухмерных миров, например 2D Terrain Editor, позволяющий создавать двухмерные тайловые среды (2D tiled environments). И еще вы можете проектировать террейны в Unity, используя его Terrain Tools, чтобы создавать потрясающие ландшафты с деревьями, травой, горами и т. д. Поэтому я вновь в сомнении: стоит ли очерчивать границы возможностей Unity.
Какова роль Microsoft? Microsoft и Unity тесно сотрудничают, чтобы обеспечить полную поддержку для всего стека платформ Microsoft. Unity поддерживает автономные исполняемые Windows-файлы, приложения Windows Phone, Windows Store, Xbox 360 и Xbox One.
Где получить опыт Юнити-разработки
Если вы начинающий Unity-разработчик, то можете искать простые и недорогие заказы на российских или зарубежных биржах фриланса. Периодически на freelance-площадках появляются задания, с которыми справится начинающий гейм-разработчик. А также можно найти вакансии для стажеров на сайтах по поиску работы.
Гарантированный способ получить опыт в геймдеве – это пройти онлайн-курс. Во время обучения у вас будут не только уроки с разбором теории, но и много практических занятий, а также домашние задания, которые станут основой для будущих проектов в портфолио.
Кроме того, обучающие программы, рассчитанные на 1-2 года, включают стажировку. Вы сможете принять участие в разработке реальной видеоигры на Юнити – в самой онлайн-школе или в партнерской гейм-студии.
Онлайн образование «Отус»
Открытый вебинар — это настоящее занятие в режиме он-лайн с преподавателем курса, которое позволяет посмотреть, как проходит процесс обучения.
В ходе занятия слушатели имеют возможность задать вопросы и получить знания по реальным практическим кейсам.
На курсе вы освоите разработку игр на Unity на примере создания 3-х игр:
- создание простой анимации
- Unity UI
- система частиц
- воспроизведение звука
- Tilemap
- 2D-физика
- On- Screen Joystick и Joystick
- Управление камерой с помощью Cinemachine
- создание многопользовательской игры
- освоите 3D — физику и terrain
- Navigation Mesh
- Photon Unity Networking и др.
Для доступа к прошедшим мероприятиям необходимо пройти входное тестирование. Возможность пройти вступительное тестирование повторно появится только через 2 недели.
Обнаружение столкновений
Ранее мы упоминали компоненты Collider и Rigidbody, которые можно добавить к объекту. Правило для столкновений состоит в том, что один объект в столкновении должен иметь твердое тело, а другой — коллайдер (или оба имеют оба компонента). Обратите внимание, что при использовании raycasting лучи будут взаимодействовать только с объектами, к которым прикреплены компоненты коллайдера. После настройки в любом настраиваемом компоненте, прикрепленном к объекту, мы можем использовать методы OnCollisionEnter, OnCollisionStay и OnCollisionExit для реагирования на коллизии. Получив информацию о столкновении, мы можем получить ответственность за GameObject и использовать то, что мы узнали ранее, для взаимодействия с прикрепленными к нему компонентами
После настройки в любом настраиваемом компоненте, прикрепленном к объекту, мы можем использовать методы OnCollisionEnter, OnCollisionStay и OnCollisionExit для реагирования на коллизии. Получив информацию о столкновении, мы можем получить ответственность за GameObject и использовать то, что мы узнали ранее, для взаимодействия с прикрепленными к нему компонентами.
Следует отметить, что твердые тела обеспечивают физику, такую как гравитация, для объектов, поэтому, если вы хотите отключить это, вам нужно будет включить is_kinematic .
Установите флажок «Кинематика», чтобы отключить нежелательную физику, но сохранить хорошее обнаружение столкновений.
Открытое образование
Курс посвящен изучению разработки игр с помощью движка Unity. По окончании курса вы сможете осуществить мечту любого геймера: создать игру по собственному сценарию.
Если вы давно хотели научиться разрабатывать игры, генерировать идеи, создавать концепцию и собственных персонажей, то этот курс станет для вас хорошим стартом на пути к работе в GameDev.
Для успешного прохождения курса, необходимо знание языка программирования C#, а также крайне желателен хотя бы базовый уровень английского.
В состав курса входят видеолекции, видеопрезентации, интерактивные формы обучения в формате видеоконференций. Длительность курса составляет 10 недель. Трудоемкость курса – 3 зачетные единицы. Средняя недельная нагрузка на обучающегося – 10 часов.
Результаты обучения:
- Знание на уровне представлений алгоритмов, методов и средств обработки информации, применяемых при анализе научно-технической информации, отечественного и зарубежного опыта по тематике исследования.
- Знание на уровне представлений основ объектно-ориентированного программирования, синтаксиса языка программирования C#.
- Знание на уровне воспроизведения инструментальных средств разработки, доступных у платформы Unity.
- Знание на уровне воспроизведения назначений и основных свойств стандартных элементов Unity.
- Умения теоретические собирать эмпирический материал, опираясь на современные источники, осуществлять сбор, анализ научно-технической информации, отечественного и зарубежного опыта по тематике исследования.
- Умения практические реализовывать базовые алгоритмические конструкции на языке программирования C#.
- Владение навыками самостоятельного проведения библиографической работы с привлечением современных электронных технологий.
- Владение навыками работы с интегрированной средой разработки, которая позволяет реализовывать разработку проекта.
Структура моноповедения
Ключевые функции
Все компоненты наследуются от класса MonoBehaviour. Он включает в себя несколько стандартных методов, главное:
- void Start (), который вызывается всякий раз, когда объект, содержащий скрипт, создается в сцене. Это полезно в любое время, когда мы хотим выполнить некоторый код инициализации, например. установить экипировку игрока после того, как он появится в матче.
- void Update (), который вызывается каждый кадр. Это то место, где будет выполняться основная часть кода, включающего пользовательский ввод, обновляющего различные свойства, такие как движение игрока в сцене.
Переменные инспектора
Часто мы хотим сделать компоненты максимально гибкими. Например, все оружие может иметь разный урон, скорострельность, has_sight и т. Д. Хотя все оружие, по сути, одно и то же, мы можем захотеть иметь возможность быстро создавать различные вариации с помощью редактора единства.
Другой пример, когда мы можем захотеть это сделать, — это создание компонента пользовательского интерфейса, который отслеживает движения мыши пользователя и помещает курсор в область просмотра. Здесь мы можем захотеть контролировать чувствительность курсора к движениям (если пользователь использовал джойстик или геймпад, а не компьютерную мышь). Таким образом, имеет смысл сделать эти переменные легко изменяемыми как в режиме редактирования, так и поэкспериментировать с ними во время выполнения.
Переменные в окне инспектора можно изменить в любой момент во время выполнения или в режиме редактирования. Примечание. Изменения, внесенные во время выполнения, не будут постоянными.
Мы можем сделать это легко, просто объявив их как общедоступные переменные в теле компонента.
Обратите внимание, как мы можем сделать переменные с разными уровнями доступа, частными, общедоступными или общедоступными, но не отображаемыми в окне инспектора
Принятие пользовательского ввода
Конечно, мы хотим, чтобы наша игра реагировала на ввод пользователя. Наиболее распространенные способы сделать это — использовать следующие методы в функции Update () компонента (или в любом другом месте, которое вам нравится):
- Input.GetKey (KeyCode.W) Возвращает True W, удерживается клавиша W
- Input.GetKeyDown (KeyCode.W) Возвращает True при первом нажатии клавиши W.
- Input.GetAxis («Вертикальный»), Input.GetAxis («Горизонтальный») Возвращает значение между -1,1 перемещения мыши при вводе.
Skill Factory
Профессия «Разработчик игр на Unity»
Научитесь разрабатывать игры на Unity и C#
Все главные навыки разработчика игр в одном курсе:
-
Программирование
Вы научитесь программировать на C# — это даст вам основу для широкого круга задач -
Все этапы гейм-дизайна
Вы отработаете каждый шаг создания игры — от идеи до загрузки в сторы и продаж -
Разные виды игр
Вы освоите разработку востребованных 2D- и многопользовательских 3D-игр -
Выпуск на рынок
Вы поймете, как зарабатывать на играх, продвигая их в App Store, Google Play, Steam
Программа профессии
Введение в GameDev и Программирование на C# (2 месяца)Результат: Создаете игровую сцену (локацию) с нуля с освещением и интерактивом. Научитесь основам языка C#, решите 50+ практических задач.
Разработка мобильных игр на Unity (3 месяца)Результат: Разработаете Space Shooter, который будет работать на мобильных устройствах Android и IOS и будет загружен в Google Play и Apple Store. Научитесь создавать мобильные 2D-игры и разработаете RPG Tower defence с несколькими уровнями. Научитесь сохранять игру и продолжать ее с сохраненного места.
Создание 3D-shooter и «Танки» (4 месяца)Результат: Разработаете 3D Shooter, который загружен в Steam. Разработаете многопользовательскую 3D игру по типу “танки», где вы будете сражаться с другими игроками по сети, а также сможете общаться с ними по голосовой связи.
Командная или инди-разработка своей игры (3 месяца)Результат: Познакомитесь с процессом проектирования новой игры. Жанр игры вы выберете самостоятельно, например action adventure, RPG, гонки и т.д. Узнаете об основных подходах, которые позволяют придумать игру, которая будет пользоваться спросом. Разработаете дизайн-документ для вашей будущей игры, подробно описывающий игру. Также вы научитесь основным подходам для продвижения и заработка на играх. Разработаете игру, которую вы самостоятельно спроектировали на предыдущем блоке по геймдизайну. Разработку можно вести индивидуально или в команде. Разработка будет вестись под руководством опытного эксперта. Ваша задача — выпустить игру и вывести ее на рынок (в Steam, Google Play и/или Apple Store).
Работа со скриптами
За поведение игровых объектов отвечают присоединенные к ним компоненты (Components). Базовый компонент любого объекта — Transform, он отвечает за положение элемента в окне Scene, возможность поворачивать и масштабировать его. К базовому компоненту можно добавить, например, Renderer, который меняет цвет, или RigidBody, который отвечает за массу и физику объекта. Но кроме базовых компонентов, объектам можно задавать особые условия, и для этого как раз используются скрипты.
Создать новый скрипт можно в окне Project, кликнув мышкой на Assets –> Create –> C# Script.
Двойным кликом мыши скрипт открывается в текстовом редакторе. Скрипты, как и все остальное в Unity, прописываются на С#, так что для создания сложных проектов разработчикам все же придется освоить этот язык.
Базовые элементы скриптов — это:
- using — элемент в коде, который подключает библиотеки;
- public class — в этой строке обычно прописан класс MonoBehaviour, он содержит набор функций, необходимых для работы скрипта;
- void — те самые функции, с их помощью прописываются действия, происходящие в игре.
Рассмотрим, например, функцию start. Любое действие в ней произойдет только один раз, когда запустится игра. Пропишем здесь print (“Hi”).
И можно заметить, что в консоли это слово выводится один раз.
Функция update — повторяющаяся, ее можно использовать, например, для передвижения объекта. Для этого в скрипте задается переменная int i = 0, она выводится на экран с помощью функции print (i) и увеличивается на одну единицу за каждый шаг с помощью i++.
В консоли можно будет заметить, что апдейт действительно срабатывает каждый фрейм и объект, к которому применен этот скрипт, плавно движется.
Что нужно знать, чтобы стать разработчиком игр на Unity
Кратко перечислим, какие технологии вам нужно освоить, чтобы стать разработчиком Unity-игр:
- Язык программирования C#.
- Инструменты среды разработки Юнити для создания интерфейса, звука, анимации, физики и искусственного интеллекта.
- Основные паттерны проектирования видеоигр и принципы геймдизайна.
- Создание игровых и поведенческих сценариев.
- Особенности 2D- и 3D-игр.
- ПО для тестирования, отладки и баг-трекинга.
Приводим пошаговую инструкцию, которая поможет вам при обучении:
- Скачайте движок с официального сайта, установите и познакомьтесь с основными опциями.
- Посмотрите, как создается самый простой интерфейс – в учебниках или в видеоуроках с Youtube.
- Составьте график и список тем для изучения. Начинайте заниматься регулярно, желательно не реже 1-2 раз в неделю.
- Сразу же закрепляйте теорию на практике, например, можно найти скринкасты опытного разработчика и повторять код.
- Когда у вас будут уверенные навыки, вы сможете практиковаться на реальных проектах, к примеру, на бирже фриланса.
Сколько стоит движок для создания игр
Для работы в Unity нужно оформить подписку – вы можете выбрать один из четырех тарифов в зависимости от потребностей и годового дохода.
Тарифный план | Personal | Plus | Pro | Enterprise |
Годовая абонентская плата в долларах | 0 долл. | 399 долл. | 1800 долл. | 2400 долл. |
Сумма в рублях в год | 0 руб. | 29,5 тыс. руб. | 133 тыс. руб. | 177 тыс. руб. |
Доход пользователя за последние 12 месяцев | До 100 тыс. долл. | До 200 тыс. долл. | От 200 тыс. долл. | От 200 тыс. долл. |
Особенности | Доступны базовые инструменты | Доступна аналитика о поведении игроков | Доступ к исходному коду, техподдержка команды Unity | Доступны специальные отраслевые решения, премиум-поддержка |
Создание проекта
После обучения можно перейти к созданию своей первой игры на Unity с помощью кнопки NEW в меню проектов.
Новому проекту присваивается имя, выбираются место хранения на диске и темплейт — то есть шаблон для разработки, внешний вид и функционал которого зависит от количества измерений в игре. Проще начинать с 2D-проектов, так как для этого формата создано больше готовых ассетов. Конечно, можно сразу начать делать 3D-игры, но в этом случае многие элементы и анимации придется самостоятельно создавать с нуля или выделять бюджет на то, чтобы делегировать эту часть работы другим специалистам.
Заключение
Эта статья была обзором архитектуры и процессов в Unity. Я рассказал об интерфейсе, основах назначения кода, объектах GameObject, компонентах, Mono, .NET и о некоторых других вещах. Это позволит мне в следующей статье углубиться в сборку компонентов для двухмерной игры. Заглядывайте в Microsoft Virtual Academy, где в конце лета я собираюсь устроить двухдневное мероприятие по обучению Unity. И следите за региональными мероприятиями на unity3d.com/pages/windows/events.
Адам Тьюлипер (Adam Tuliper) — старший идеолог по технологиям в Microsoft; живет в солнечной Южной Калифорнии. Разработчик инди-игр, один из администраторов Orange County Unity Meetup и автор на pluralsight.com. Скоро в его семье появится третий ребенок, так что связывайтесь с ним, пока у него еще есть свободные минуты, по адресу adamt@microsoft.com или через .
Выражаю благодарность за рецензирование статьи экспертам Мэтту Ньюмену (Matt Newman) из Subscience Studios, Хайме Родригесу (Jaime Rodriguez) из Microsoft и Тоутвидасу Цилису (Tautvydas Žilys) из Unity.
Вывод сообщения в консоль Unity
Когда ты напишешь свой первый код и добавишь его в Unity, Unity проверит код и, если в нем нет ошибок, произойдет компиляция.
Компиляция — это трансляция кода, написанного программистом, в машинный код, который понимает компьютер.
Консоль (англ. — Console) – это панель в Unity, которая отображает ошибки в коде (отображаются красным значком), предупреждения (отображается желтым значком) и позволяет выводить справочную информацию (белый значок). По умолчанию эта панель отображается в нижней части программы в закладке Console. Если эта панель не отображается на экране, то в главном меню выбери Window → Console.
Консоль Unity
Чтобы создать скрипт выбери Assets → Create → C# Script. Имя скрипта должно быть обязательно на английском и начинаться с большой буквы. Открой созданный скрипт и напиши:
// функция Start() вызывается при инициализации void Start() { print("Hello world!"); }
Скрипт не будет работать до тех пор, пока экземпляр скрипта не будет присоединен к игровому объекту. Ты можешь прикрепить скрипт перетащив его на игровой объект в окно Иерархия или через окно Инспектор выбранного игрового объекта.
Код, который должен вызываться один раз при старте программы, ты можешь написать внутри функции , как в примере выше.
Код, который должен вызываться каждый кадр, ты можешь написать внутри функции .
// функция Update() вызывается в каждом кадре void Update () { print("update"); }