1. Введение
1. Введение в Unity
1.1.
Преимущества Unity
Приложение Unity предлагает моделирование физических сред,
карты нормалей, преграждение окружающего света в экранном пространстве (Screen
Space Ambient Occlusion, SSAO), динамические тени и многое другое.
Подобные наборы функциональных возможностей есть во многих
игровых движках, но Unity обладает двумя основными преимуществами над другими
передовыми инструментами разработки игр. Это крайне производительный визуальный
рабочий процесс и сильная межплатформенная поддержка.
Движок обеспечивает основную функциональность пакета
Unity3d. Он включает в себя многократно используемые программные компоненты:
графический движок («визуализатор»), физический движок, звуковой движок,
систему скриптов, анимацию, искусственный интеллект, сетевой код, управление
памятью и многопоточность.
2. Межплатформенная поддержка
В данном случае это словосочетание подразумевает не только
места развертывания (игру можно развернуть на персональном компьютере, в
интернете, на мобильном устройстве или на консоли), но и инструменты разработки
(игры создаются на машинах, работающих под управлением как Windows, так и Mac
OS). Эта независимость от платформы явилась результатом того, что изначально
приложение Unity предназначалось исключительно для компьютеров Mac, а позднее
было перенесено на машины с операционными системами семейства Windows.
Созданные на движке проекты можно легко портировать между ОС Windows, Linux, OS
X, Android, iOS, на консоли семейств PlayStation, Xbox, Nintendo, на VR- и
AR-устройства. Unity поддерживает DirectX и OpenGL, работает со всеми
современными эффектами рендеринга.
В компонентной системе объект существует в горизонтальной иерархии, поэтому объекты состоят из наборов компонентов, а не из иерархической структуры с наследованием, в которой разные объекты оказываются на разных ветках дерева. Такая компоновка облегчает создание прототипов, потому что взять нужный набор компонентов куда быстрее и проще, чем перестраивать цепочку наследования при изменении каждого объекта.
Разумеется, ничто не мешает написать код, реализующий вашу
собственную компонентную систему, но в Unity уже существует вполне надежный
вариант такой системы, органично встроенный в визуальный редактор. Эта система
дает возможность не только управлять компонентами программным образом, но и
соединять и разрывать связи между ними в редакторе. Разумеется, возможности не
ограничиваются составлением объектов из готовых деталей; в своем коде вы можете
воспользоваться наследованием и всеми наработанными на его базе шаблонами
проектирования.
1.2.
Недостатки
1. Создание масштабных, сложных сцен с множеством
компонентов может негативно повлиять на производительность игры, в результате
чего разработчикам придется потратить дополнительное время и ресурсы на оптимизацию,
а возможно – и удаление некоторых элементов из проекта.
2. Приложения, созданные на Unity, довольно «тяжеловесны»:
даже самый простой проект может занимать несколько сотен мегабайт на ПК. Да,
для жесткого диска компьютеров это небольшой объем, но, если проект
разрабатывается и для web или мобильных платформ, следует задуматься об
оптимизации его размера.
3. Нетипичное сочетание визуального редактора со сложным
кодом, несмотря на всю его эффективность в рамках компонентной системы Unity. В
сложных сценах из виду могут потеряться присоединенные компоненты. Разумеется,
существует функция поиска, но она могла бы быть и более надежной; порой все
равно возникают ситуации, когда для поиска связанных сценариев приходится
вручную просматривать все элементы сцены. Такое случается нечасто, тем не менее
подобной кропотливой и трудоемкой работы хотелось бы совсем избежать.
4. Unity не поддерживает ссылки на внешние библиотеки кода.
Все библиотеки, которые вы планируете задействовать, следует вручную копировать
в проект, вместо того чтобы дать ссылку на одну папку общего доступа.
Отсутствие единой папки с библиотеками затрудняет коллективное использование
функционала разными проектами. Это неудобство можно обойти, рационально
воспользовавшись системами контроля версий, но готовое решение данной проблемы
в Unity отсутствует.
1.3. О сценах
Все, что выполняется в вашем проекте, существует в сцене.
Когда вы компилируете проект для какой-то платформы, конечный продукт
представляет собой одну или более сцен плюс любой добавленный вами код,
специфичный для конкретной платформы. Количество сцен в проекте не ограниченно.
Сцену можно рассматривать как уровень в игре, хотя в одном файле сцены может
быть несколько уровней — достаточно перемещать камеру в другие позиции сцены.
Скачивая сторонние пакеты или даже примеры из магазина ресурсов, вы обычно
должны найти файлы сцен, чтобы открыть их в своем проекте. Файл сцены содержит
всевозможные метаданные о ресурсах, используемых в проекте для текущей сцены и
ее свойств.
1.4. GameObject
Lights |
Источники освещения |
3D Models |
3D-модели |
Sprites |
Спрайты |
HUDs |
Игровые интерфейсы |
Particle Systems |
Системы частиц |
GameObject |
GameObject |
Свойство Transform определяет позицию, поворот и масштаб
любого GameObject. Unity использует левостороннюю систему координат, в которой
координаты на экране компьютера рассматриваются как X (по горизонтали), Y (по
вертикали) и Z (глубина, т. е. входящие или исходящие из экрана). Transform.Position и Transform.Scale являются объектами Vector3. Vector3 — это
трехмерный вектор; иначе говоря, в нем не более трех точек: только X, Y и Z.
Манипулируя этими тремя простыми значениями, вы можете задавать местонахождение
объекта и даже перемещать его в направлении вектора.
Комментарии
Отправить комментарий