Данная статья по своей сути является введением в разработку на движке Unity3d, но в отличии от большинства подобных будет скорее попыткой расскрыть самую суть движка, нежели показать как нужно двигать кубики да сферки. Итак начинаем погружение!
На самом деле, все что вам нужно знать о Unity3d, чтобы осознанно начать ваять на нем игру вашей мечты, включает в себя лишь две вещи — GameObject и Component. Начнем с первой, как наиболее «примитивной». GameObject представляет собой контейнер, который может содержать в себе разные функциональные штуки. Представьте себе автомобиль, у него есть двигатель, колеса, кузов и еще огромное кол-во всевозможных механизмов и электрики. Так вот, воспринимать сам автомобиль можно именно как GameObject, а все внутренности как его компоненты. Т.е. автомобиль и есть контейнер, ничего больше. (Тут стоить сделать маленькую ремарку, в состав автомобиля могу также входить другие GameObject'ы, например колеса, вполне себе контейнеры для дисков, покрышек и камеры Подобные отношения в Unity3d представляют собой отношение родитель-ребенок.) Понятнее это будет показано на картинке ниже по тексту.
Но вернемся к нашему автомобилю-контейнеру. Как любой материальный объект в нашей вселенной, автомобиль имеет определенное местоположение в нашем мире. Читай любому объекту на Земле соответствуют однозначные GPS координаты. Так вот, мы пришли к одному из самых главных компонентов всех GameObject'ов — компоненту Transform. Он есть у любого GameObject'a в Unity3d. Согласитесь, если материальному объекту нельзя присвоить определенные координаты в нашем мире, этот объект просто не может в нем существовать. Помимо положения в мире, Transform описывает «поворот» объекта и его «размер».
На этой картинке мы видим сам объект и его структуру. В данном случае GameObject Auto и вложенные в него GameObject'ы: WheelFront01, WheelFront02, WheelRear01, WheelRear02. Каждый из этих объектов содержит компоненты, Transform, MeshFilter и MeshRenderer (нижняя правая часть картинки). Первый, как уже было сказано, отвечает за положение объекта в пространстве, два последних за отрисовку объекта на экране. Если попытаться провести параллель с ООП, то GameObject будет представлять собой объект, а Component — какой-то метод этого объекта. Понять эту взаимосвязь очень важно на начальном этапе освоения Unity3d. Попробуйте поиграться с этими сущностями прямо сейчас. В меню редактора есть два пункта: GameObject и Component, из первого можно создать пустой GameObject или разные примитивы: куб, сферу, цилиндр и т.д. Из второго добавить на выделенный объект различные компоненты, например AudioSource (отвечает за проигрывание звуков) или Light (источник света).
p.s. Знаю, что это очень простая вещь, для хоть сколько-нибудь разобравшихся в движке. Но когда я начинал, мне очень не хватало подбной статьи. Спасибо за внимание)
Автор: DMinsky