Как создать unity3d файл

Обновлено: 04.07.2024

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

Unity изначально поддерживает три языка программирования:

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

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

Новый скрипт будет создан в папке, которую вы выбрали в панели Project. Имя нового скрипта будет выделено, предлагая вам ввести новое имя.

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

Структура файла скрипта

После двойного щелчка на скрипте в Unity, он будет открыт в текстовом редакторе. По умолчанию Unity будет использовать MonoDevelop, но вы можете выбрать любой редактор из панели External Tools в настройках Unity.

Содержимое файла будет выглядеть примерно так:

Скрипт взаимодействует с внутренними механизмами Unity за счет создания класса, наследованного от встроенного класса, называемого MonoBehaviour . Вы можете думать о классе как о своего рода плане для создания нового типа компонента, который может быть прикреплен к игровому объекту. Каждый раз, когда вы присоединяете скриптовый компонент к игровому объекту, создается новый экземпляр объекта, определенный планом. Имя класса берется из имени, которое вы указали при создании файла. Имя класса и имя файла должны быть одинаковыми, для того, чтобы скриптовый компонент мог быть присоединен к игровому объекту.

Основные вещи, достойные внимания, это две функции, определенные внутри класса. Функция Update - это место для размещения кода, который будет обрабатывать обновление кадра для игрового объекта. Это может быть движение, срабатывание действий и ответная реакция на ввод пользователя, в основном всё, что должно быть обработано с течением времени во игровом процессе. Чтобы позволить функции Update выполнять свою работу, часто бывает полезно инициализировать переменные, считать свойства и осуществить связь с другими игровыми объектами до того, как будут совершены какие-либо действия. Функция Start будет вызвана Unity до начала игрового процесса (т.е. до первого вызова функции Update), и это идеальное место для выполнения инициализации.

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

Здесь функции Start и Update имеют такое же значение, но класс не объявлен явно. Предполагается, что скрипт сам по себе определяет класс; он будет неявно производным от MonoBehaviour и получит своё имя от имени файла скриптового ассета.

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

Как было сказано ранее, скрипт определяет только план компонента и, таким образом, никакой его код не будет активирован до тех пор, пока экземпляр скрипта не будет присоединен к игровому объекту. Вы можете прикрепить скрипт перетаскиванием ассета скрипта на игровой объект в панели Hierarchy или через окно Inspector выбранного игрового объекта. Имеется также подменю Scripts в меню Component, которое содержит все скрипты, доступные в проекте, включая те, которые вы создали сами. Экземпляр скрипта выглядит так же, как и другие компоненты в окне Inspector:-


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

Введение в Unity

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


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

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

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

  • Как установить Unity, а также различия между тремя разными версиями
  • Что составляет интерфейс Unity
  • Навигацию внутри сцены
  • Добавление и управление объектами GameObject и их компонентами

Первая часть этого руководства посвящена ознакомлению с пользовательским интерфейсом Unity.

С чего начать?


Все версии Unity предоставляют одинаковые функции движка

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


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

Кроме того, существуют различные сервисы внутри Unity, такие как Cloud Build и Analytics, которые становятся доступными в платных версиях.В Unity есть несколько строгих правил о том, как вы можете использовать персональную версию. Перед тем, как приступить к работе, обязательно ознакомьтесь с FAQ по Unity, чтобы узнать, имеете ли вы право его использовать.

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


Запустите установщик и следуйте инструкциям на экране. Дождитесь завершения установки и запустите Unity Hub. Вам будет предложено создать учетную запись.


Создав учетную запись, запустите Unity. Нажмите File-New Project чтобы создать новый проект.

  • 1. Назовите свой проект Spaceship и выберите место на жестком диске, чтобы сохранить его.
  • 2. Вы заметите, что у вас есть несколько вариантов выбора шаблонов. Каждый шаблон предварительно настраивает Unity, чтобы сэкономить ваше время в зависимости от того, что вы хотите сделать. Сейчас выберите 3D.
  • 3. Нажмите Create, и Unity откроет ваш первый проект.

Переделываем интерфейс

Когда Unity впервые откроется, вы увидите окно, которое выглядит так:


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

В верхнем правом углу вы увидите пять кнопок. Выберите крайнюю справа. Это выбор макета (Layout). Из списка опций выберите 2 by 3.

Ваш редактор станет выглядеть так, как показано ниже:


Теперь разберем имеющиеся разделы.

1. Окно сцены

Когда вы тестируете свою игру, окно сцены будет обновляться с текущим состоянием игры. Вы даже можете добавлять новые элементы в сцену на лету.

Когда вы остановите игру, окно сцены вернется в исходное состояние. Любые изменения, внесенные в сцену во время игры, будут потеряны после ее остановки.

2. Окно игры

Окно игры (Game View) отображает игровую перспективу игрока. Здесь вы можете поиграть в свою игру и увидеть, как все различные механизмы работают друг с другом.

В окне игры имеется селектор соотношения сторон, который позволяет вам изменять размеры вида в соответствии с определенным соотношением сторон экрана (например, 4: 3, 16: 9, 16:10…) или размером экрана устройства, например это iPhone или iPad.

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


3. Окно иерархии

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

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

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

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

4. Окно проекта

Окно проекта (Project Window) содержит все ассеты, используемые вашей игрой. Вы можете организовать свои ассеты по папкам. Если вы хотите использовать их, вы можете просто перетащить их из окна проекта в окно иерархии.

Кроме того, вы можете перетащить их из окна проекта в окно сцены. Если вы перетащите файлы со своего компьютера в окно проекта, Unity автоматически импортирует их как ассеты.

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

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

5. Окно инспектора

Окно инспектора (Inspector Window) позволяет вам настроить любой GameObject. Когда вы выбираете GameObject в Иерархии, Инспектор перечисляет все компоненты GameObject и их свойства.

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


6. Панель инструментов

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

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


  • 1. Откройте раскрывающийся список GameObject из меню Unity
  • 2. Выберите раскрывающийся список 3D-объектов
  • 3. Выберите Cube из списка доступных объектов

Это даст вам визуальный ориентир, пока вы будете изучать параметры панели инструментов.

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


Выберите инструмент Рука (Hand) затем перетащите указатель мыши на окно сцены, чтобы панорамировать всю сцену.

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

Затем, удерживайте нажатой клавишу Ctrl (или Cmd) и Alt (или Option) . Щелкните правой кнопкой мыши и переместите мышь вверх, чтобы увеличить масштаб сцены.

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

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

Аналогично, вы можете перемещаться вверх и вниз, нажимая E или Q соответственно. Чтобы двигаться еще быстрее, нажмите и удерживайте клавишу Shift .

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

Инструмент Перемещение (Move) позволяет выбирать и размещать GameObject на сцене.


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

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

Три цветные плоскости в центре GameObject позволяют перемещать его по двум осям. Цвет квадрата указывает, по какой плоскости он будет двигаться. Например, зеленый квадрат означает, что вы можете перемещать объект по плоскости y (что означает, что он может перемещаться по осям x и z).

Клавиша быстрого доступа по умолчанию для инструмента перемещение W.

Инструмент Вращение (Rotate) позволяет, как вы уже догадались, вращать объекты.


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

Клавиша быстрого доступа по умолчанию для инструмента вращение E.

Инструмент Масштаб (Scale) позволяет масштабировать объект GameObject либо по одной оси, либо пропорционально по всем осям.


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

Клавиша быстрого доступа по умолчанию для инструмента масштаб R.

Инструмент Rect в основном используется с 2D-объектами и пользовательским интерфейсом (UI), хотя его можно использовать и для 3D-объектов.


Инструмент может изменять размеры, масштабировать и вращать 2D-объекты, а также сбрасывать точку вращения, которая является центральной точкой вращения объекта. Опорная точка представлена ​​большим кружком на объекте.

Клавиша быстрого доступа по умолчанию для инструмента Rect T.

Инструмент Преобразование (Transform) объединяет перемещение, масштабирование и вращение в один инструмент.


Первый переключатель переключается между центральным (center) и поворотным (pivot) режимами. В центральном режиме, если вы выберете два объекта GameObject, гизмо будет размещено в центре двух объектов. Вращение GameObjects вращает их вокруг центра гизмо. В режиме поворота каждый GameObject вращается вокруг своей точки поворота, как показано ниже:

Второй переключатель переключает между глобальным (global) и локальным (local) пространством.

  • Глобальный режим: вы управляете своим объектом с точки зрения окружающего мира. Ось X движется слева направо, ось Y движется вверх и вниз, а ось Z движется вперед и назад, как обычно.
  • Локальный режим: работает из системы координат самого объекта и меняет оси в соответствии с осью реального GameObject.

7. Кнопки воспроизведения

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

Интерфейс Unity затемнится, чтобы показать, что игра активна.


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

Далее следует кнопка Пауза:

Она позволяет сделать паузу и вносить изменения в игру.

Наконец, последняя кнопка Step:

Она позволяет вам шаг за шагом проходить игру. Это удобно, когда вы хотите наблюдать анимацию по кадрам, или когда вы хотите проверить состояние определенных GameObjects во время игры.

8. Разные настройки редактора


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


Как только вы добавите идентификатор проекта, вы сможете добавить сервисы в ваш проект.

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

Вы также можете добавить:

  • аналитику
  • внутриигровую рекламу
  • многопользовательская поддержку
  • покупку в приложении
  • отчеты о производительности
  • сотрудничество

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



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

Последняя кнопка Макеты (Layouts) позволяет создавать и сохранять макеты в редакторе и переключаться между ними. Unity прекрасно настраивается. Каждый из различных окон в макете может быть изменен, закреплен, перемещен или даже полностью удален из редактора.

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

Что делать дальше?

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

Опишем процесс сборки проекта под платформу Android, которая поддерживается большинством смартфонов.

Для начала сборки необходимо открыть окно Build Settings из пункта меню File -> Build Settings… (или нажать комбинацию клавиш Ctrl + Shift + B):

Окно Build Settings

Шаг 1. Выбор платформы

В окне Build Settings выбрать платформу Android и нажать на кнопку Switch Platform:

Выбор платформы Android

Выбор платформы Android

Шаг 2. Проверить и отредактировать (если надо) настройки в в окне Project Settings, в разделе Player:

1) заполнить поля:

Company Name (писать по-английски и лучше без знаков препинания и пробелов),

Product Name (аналогично – по-английски и без специальных символов и пробелов),

Version (можно оставить значение по умолчанию, но если приложение собирается повторно, то значение надо менять на большее; тогда при установке новой версии приложения на смартфон существующее приложение обновится. Если это число оставить прежним, потребуется сначала удалить установленное ранее приложение).

2) задать изображение для иконки приложения, добавив его в Default Icon.

3) если необходимо, в разделе Resolution and Presentation можно зафиксировать ориентацию приложения: горизонтальное (Landscape) или вертикальное (Portrait):

Ориентация приложения

Ориентация приложения

4) в разделе Other Settings проверить правильность сформированного идентификатора в поле Package Name:

Это минимальный набор настроек, которые стоит отредактировать. После этого окно Project Settings можно закрыть.

Шаг 3. Перечислить в окне Build Settings сцены, которые должны попасть в сборку (build) проекта:

Если сцена всего одна, и она открыта в редакторе, можно просто нажать на кнопку Add Open Scenes.

Дополнительные сцены можно перетащить мышью из нужной папки окна Project.

Если в окне Scenes in Build указана не та сцена, её можно выделить мышью и удалить, нажав на клавишу Delete на клавиатуре компьютера.

Шаг 4. Нажать на кнопку Build в правом нижнем углу окна Build Settings, указать папку и имя собираемого файла в формате .apk и нажать на кнопку Сохранить (Save):

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

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

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

Вступление

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

Почему Unity?

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

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

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

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


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

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

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

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

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

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

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

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

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

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

Объекты Unity Game

Что такое GameObjects

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

Я поднял это прямо из окна редактора Unity, чтобы подчеркнуть это.

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

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

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

Unity Translation: вы создаете клон Minecraft и у вас есть множество блоков в сцене, вам нужно добавлять и удалять «куски» блоков из сцены по соображениям производительности. Таким образом, их родительство с пустым GameObject для каждого фрагмента имеет смысл, поскольку удаление родительского фрагмента удаляет все дочерние блоки.

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

Веб-аналогия: вы хотите сохранить положение содержимого «относительно» контейнера, а не веб-страницы.

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

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

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

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

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

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

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

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

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

Просто нажмите на раздел справки, документация в целом довольно хороша

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

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

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

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

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

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

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

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

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

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

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

  • Input.GetKey (KeyCode.W) Возвращает True W, удерживается клавиша W
  • Input.GetKeyDown (KeyCode.W) Возвращает True при первом нажатии клавиши W.
  • Input.GetAxis («Вертикальный»), Input.GetAxis («Горизонтальный») Возвращает значение между -1,1 перемещения мыши при вводе.

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

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

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

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

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

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

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

Как вы понимаете, за этим стоит довольно простая линейная алгебра, на которую намекает «Обратный» в имени метода.

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

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

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

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

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

Затем мы можем выполнить «создание экземпляра» префаба и манипулировать им в желаемом месте сцены и установить необходимые родительские отношения.

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

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

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

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

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

Это просто делается, как показано ниже.GameObject some_game_object = GameObject.FindGameObjectWithTag («Кирпич»);

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

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

Raycasting

Возможно, вы слышали об этом раньше, когда люди сравнивают игры FPS, основанные на «физике» или «на основе лучей». Raycasting по сути похож на лазерную указку, которая при соприкосновении с «коллайдером» или «твердым телом» возвращает «попадание» и передает детали объекта.

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

  1. Если вы разрабатываете систему оружия для игры, вы можете использовать raycasting для обнаружения попаданий и даже настроить длину луча, чтобы предметы ближнего боя «поражали» только на коротких дистанциях.
  2. Создайте луч от указателя мыши к точке в трехмерном пространстве, то есть если вы хотите, чтобы пользователь мог выбирать юниты с помощью мыши в стратегической игре.

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

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

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

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

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

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

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

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

Анимация

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

Материалы и PBR

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

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

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

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

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

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