1. Введение

1.   Введение в Unity

1.1.     Преимущества Unity

Приложение Unity предлагает моделирование физических сред, карты нормалей, преграждение окружающего света в экранном пространстве (Screen Space Ambient Occlusion, SSAO), динамические тени и многое другое.

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

Движок обеспечивает основную функциональность пакета Unity3d. Он включает в себя многократно используемые программные компоненты: графический движок («визуализатор»), физический движок, звуковой движок, систему скриптов, анимацию, искусственный интеллект, сетевой код, управление памятью и многопоточность.


1. Визуальный рабочий процесс - привязан к тщательно продуманному визуальному редактору. Именно в нем вы будете компоновать сцены будущей игры, связывая игровые ресурсы и код в интерактивные объекты. Он позволяет быстро и рационально создавать профессиональные игры, обеспечивая невиданную продуктивность разработчиков и предоставляя в их распоряжение исчерпывающий список самых современных технологий в области 2D и 3D визуального программирования.

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


2. Межплатформенная поддержка

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


3. Модульная система компонентов, которая используется для конструирования игровых объектов. «Компоненты» в такой системе представляют собой комбинируемые пакеты функциональных элементов, поэтому объекты создаются как наборы компонентов, а не как жесткая иерархия классов. В результате получается альтернативный (и обычно более гибкий) подход к объектно-ориентированному программированию, в котором игровые объекты создаются путем объединения, а не наследования. Оба подхода схематично показаны на рис. 1.1.

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

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

1.2.     Недостатки

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

2. Приложения, созданные на Unity, довольно «тяжеловесны»: даже самый простой проект может занимать несколько сотен мегабайт на ПК. Да, для жесткого диска компьютеров это небольшой объем, но, если проект разрабатывается и для web или мобильных платформ, следует задуматься об оптимизации его размера.

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

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

1.3.     О сценах

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

1.4.     GameObject

Практически все в вашей сцене является GameObject. Вспомните System.Object в .NET Framework. От него наследуют почти все типы. Та же концепция относится и к GameObject. Это базовый класс для всех объектов в сцене Unity. Все объекты, показанные на рис. (и многие другие), наследуют от GameObject.

Lights

Источники освещения    

3D Models

3D-модели

Sprites

Спрайты

HUDs

Игровые интерфейсы

Particle Systems

Системы частиц

GameObject

GameObject

 GameObject довольно прост, так как он относится к окну Inspector. У GameObject по умолчанию нет визуальных свойств, если не считать того, что при выделении этого объекта появляется виджет Unity. На этом этапе это фактически пустой объект. GameObject имеет свойства Name, Tag, Layer и Transform.

Свойство Transform определяет позицию, поворот и масштаб любого GameObject. Unity использует левостороннюю систему координат, в которой координаты на экране компьютера рассматриваются как X (по горизонтали), Y (по вертикали) и Z (глубина, т. е. входящие или исходящие из экрана). Transform.Position и Transform.Scale являются объектами Vector3. Vector3 — это трехмерный вектор; иначе говоря, в нем не более трех точек: только X, Y и Z. Манипулируя этими тремя простыми значениями, вы можете задавать местонахождение объекта и даже перемещать его в направлении вектора.

Редактор Unity >>>

Комментарии

Популярные сообщения из этого блога

Лабораторные работы

О курсе...