Unity 3D или само Unity е популярен гейм енджин, който позволява компилирането на един проект на множество платформи.
Това означава, че създадена в Unity игра може да бъде компилирана така, че да работи на най-големите платформи. Това включва WEB приложение, компютърна игра за различни операционни системи (като Windows, Linux и Mac OS), също така като мобилна игра за Android, iOS, Windows Phone, или конзолна игра за PlayStation 3, 4, vita, Xbox One, Nintendo и други.
Последната версия на енджина поддържа над 25 различни платформи за експорт.
Unity се предлага в няколко варианта за използване, като най-популярния е персоналната версия – Personal Edition, която предлага пълния набор от функции на енджина. С нея разработчиците могат безплатно да разработват и продават игрите си до достигането на определен годишен приход (който в момента на писането на статията възлиза на 100 хиляди долара).
Енджина поддържа три езика за програмиране:
- BOO е език разработен от Unity, който не успява да се наложи и информацията за него е изключително оскъдна.
- Mono C# е дистрибуция на Microsoft за Linux, която поддържа почти всички функции на стандартния C#.
- JavaScript – популярен език за програмиране, разпространяван с повечето WEB браузъри. Върху него има добавени някои правила за работа, като например задължителна типизация на променливите (обявяването на типа им) при декларирането им.
Гейм енджина Unity 3D е изграден на Mono. Това е имплементация с отворен код на платформата .Net. Unity има изградена собствена интегрирана среда за разработка (IDE) с вградени 2D и 3D физики.
Първоначално Unity 3D (както подсказва името) може да работи само в 3D среда. Създаването на 2D игри по този начин е трудно, но не и невъзможно. Това се променя през май 2014 година с версия 4.5.0, която имплементира нови възможности за създаване на 2D игри. Една от най-забележимите промени е включването на 2D изглед, който показва поглед към сцената в двумерното пространство. Интегрираната среда за разработка се състои от няколко основни панела. Разглеждайки панелите ще се спра и на функциите за работа, които те предлагат. Други промени, които си струва да се отчетат са имплементацията на техники за работа с двумерни изображения, както и изграждането на 2D физика.
2D графика в Unity
Графичните обекти в двумерното често са наричани спрайтове (sprites). В същността си спрайтовете са стандартни текстури, но съществуват техники за комбиниране и управление, които помагат за по ефективна работа по време на разработка. Unity предлага вграден редактор за работа със спрайтове, който позволява извличането им от голям графичен обект с множество изображения (sprite sheet). Това позволява обработката на множество компоненти в една текстура. Спрайтовете се рендерират със Sprite Renderer*, вместо с Mesh Renderer, който се използва при 3D обектите.
*Sprite Renderer е компонент който позволява изобразяването на графики, като спрайтове в сцената.
2D физика в Unity
Unity има отделен енджин за физика, който управлява физичните закони в двумерното пространство, което дава на разположение среда за разработка, специално оптимизирана за работа в 2D. Компонентите в тази среда имат своите еквиваленти на компонентите от стандартната 3D физика с 2D в края на името. Това включва компоненти като Rigidbody 2D и Rigidbody (компонент позволяващ на обект да бъде контролиран от физика), Box Collider 2D и Box Collider (позволява управление на колизии) Hinge Joint 2D и Hinge Joint (позволява управлението на шарнирни връзки). Въпреки че има изключения, повечето физични компоненти в 2D пространството са опростени версии на съответните им 3D компоненти. Така например Box Collider 2D има форма на квадрат, а Box Collider има форма на куб.
Преглед на основните панели за работа
Интегрираната среда за разработка предлага няколко основни панела, чрез които се осъществява контрол върху проекта. Най-популярните от тях са включени в оформлението по подразбиране. В следващите редове ще разгледам начина за работа с тези панели, както и функциите, които предоставят.
Project Browser (браузър на проекта)
Тук се съдържа файловата структура на проекта, текстури, спрайтове, файловете със скрипт, анимации и всички други ресурси, които ще бъдат използвани в проекта. Навигацията в Project Browser-а е подобна на навигацията в Windows Explorer, като ресурси могат да бъдат добавяни с Drag and Drop или през главното меню Assets/Import New Asset…. Екранната снимка показва Project Browser-а на примерен проект.
Hierarchy (йерархия на обектите в сцена)
Йерархията на обектите съдържа всички игрови обекти в заредената сцена. При създаване на празна сцена в йерархията по подразбиране се създава автоматично единствено камера, която показва каква част обектите от света (ако се добавят такива) ще вижда играча. Изображението показва йерархията в примерна сцена в примерен проект.
Йерархията показва списък на всички обекти заредени в сцената, като при стартирана симулация на игра тук се показват и тези обекти, които не са добавени ръчно и се зареждат в сцената с програмен код (куршуми, лазери, врагове и други елементи, които се появяват в моментите след началото на нивото). Обектите могат да бъдат подредени в папки от празни обекти и кликването върху обект го показва в сцената. Йерархията поддържа Drag and Drop и това е основния начин, по който се добавят обекти.
Toolbar (Лента с инструменти)
Toolbar-a е мястото, където се намират инструментите за трансформация на обектите в сцената. Това включва местене, ротация и мащабиране. До тях се намират инструментите за работа с координатни системи. Следват бутоните за бързо стартиране на играта. Функционалността, която предоставят е един от големите плюсове на Unity 3D, тъй като потребителите могат да тестват бързо и ефективно конкретни сцени и елементи от играта. При други енджини, за да се стартира играта кода трябва да се компилира. Това отнема време повече време, особено когато проекта е голям. Тук потребителите бързо могат да стартират играта си и дори да настройват и тестват различните елементи, докато играта върви. Следва бутона за услуги, който отваря прозорец, отнасящ се до различни услуги, които потребителите могат да включат, като Ads, Analytics, In-App Purchasing и Multiplayer. Тези услуги се отнасят до интегрирането на реклами, анализ на използваните компютърни ресурси при работа на различните елементи, управление на микро-транзакции и игра в мрежа.
Следва инструмент за управление на акаунта, друг за управление на слоевете и на последно място – инструмент за управление на изгледа на средата за разработка. Управлението на слоевете е сходно с това на програмите за обработка на компютърна графика. Следващите фигури показват конкретно всеки един от бутоните в Toolbar-a.
Изображението показва всички бутони за трансформация, от дясно на ляво това са бутона Pan (за придвижване на погледа върху сцената), Move за местене на обекти, Rotate за ротация и бутоните за мащабиране и оразмеряване на обектите.
Горното изображение показва бутоните за работа с координатната система.
Изображението показва бутоните за стартиране на заредената сцена от играта. Първият бутон е за стартиране на играта. В случай, че компилатора открие грешки в кода, те ще се покажат в конзолата и играта няма да стартира правилно. Вторият бутон е бутона за пауза а третият за стартиране фрейм по фрейм (кадър по кадър).
Scene View (изглед към сцената)
Изгледа към сцената визуално показва всички видими обекти в сцената. Това е мястото, където можем да наблюдаваме и позиционираме обектите в сцената. Можем да виждаме целия свят или отделни части от него, като например частта, която ще се е видима за потребителите. Изгледа може да бъде показван както в двумерно, така и в тримерното пространство независимо от това дали се разработва 2D или 3D проект. Изображението показва изглед към сцената на примерен проект.
Изгледа към сцената е мястото, където можем да нагласим резолюцията, в която играта ще изглежда добре. Тук трябва да се има в предвид платформата на която ще се публикува. Мулти-платформените игри трябва да изглеждат добре на всички резолюции.
Game View (изглед към играта)
Game View показва играта от гледната точка на потребителя. Това може да се случва и по време на стартирана симулация, позволявайки на разработчиците да настройват различни елементи по всяко време. Екранната снимка показва изглед към играта на примерна сцена по време на включена симулация.
Inspector (Инспектор)
Инспектора дава достъп до всички компоненти на елементите в проекта. Това е мястото, където могат да се добавят или премахват компоненти от обектите на сцената, като параметрите им могат да се променят във и извън симулация. Изображението показва параметрите на главна камера в инспектора на примерен проект.
Animation View (Изглед на анимациите)
Изгледа на анимацията е тясно свързан с йерархията, изгледа към сцената и инспектора. Изгледа на анимацията показва времева линия и ключовите кадри на анимацията за избран обект от играта. Потребителите могат да избират тези обекти използвайки Йерархията или Изгледа към сцената. Изображението показва как изглежда панела. Лявата част показва различните стойности на избран обект от играта (в случай, че има такива). От дясната страна на панела е показан изглед към сцената и йерархията на обектите в сцената.
Лявата страна на прозореца за изглед на анимацията се състои от списък на анимираните свойства на избран обект. В случай, че върху избрания обект няма анимация, тази страна от прозореца е празна. В случай, че избрания обект контролира множество наследници, списъкът ще включва йерархичната структура на всяко дете (всеки наследник). Изображението показва множество анимирани части от обект в примерен проект – Ръка на робот (Robot arm). Всички елементи са анимирани в един анимационен клип и всяка анимация на обекта е показана в йерархична структура според връзките на обекта корен, към който е добавен компонент за анимация.
Всяко свойство на обект може да бъде разгънато, така че да показва конкретните си стойности за всеки ключов кадър. Полетата от стойности ще покажат интерполирана стойност, ако главата за възпроизвеждане (червенат6а линия) се намира между ключовите кадри. Тези полета могат да се настройват директно. В случай на промени, когато главата за възпроизвеждане е върху ключов кадър, неговите стойности ще бъдат променени. В случай, че промените са направени, когато главата за възпроизвеждане е между ключовите кадри (следователно показвана стойност е интерполирана), нов ключов кадър ще бъде създаден в точката, в която е добавена промяната.
В дясната част на изгледа на анимациите се намира времевата линия. Времевата линия показва ключовите кадри за всяка стойност, която подлежи на анимиране. Времевата линия има два режима за изглед.
- Dope Sheet Timeline Mode
Този изглед предоставя компактен поглед върху пистата на времевата линия и ключовите кадри на един или множество обекти. Това е изгледа по подразбиране.
- Curves Timeline Mode
Това изображение показва линейна промяна на анимираните стойности в течение на изпълнението на анимацията. Така се предоставя по добър контрол върху погледа и промяната на стойности.
Animator Window
Контролите на аниматора (наричан още Mechanim) позволяват контрола върху набор от анимации на обект. Този инструмент има референции до анимационните клипове на обекта и управлява различните състояния на анимацията и преходите между тях, използвайки така наречения автомат за състояния.
Прозореца на аниматора има две главни секции. От ляво имаме панел на слоевете и параметрите. От дясно имаме главната зона управление на състоянията. Изображението показва прозореца на аниматора на примерен проект.
Други панели
Менюто Windows дава възможност за показване на екрана на всички налични панели. Чрез тях потребителите могат да използват всички функции на енджина. Всеки прозорец в интегрираната среда за разработка на Unity 3D може да бъде местен с Drag and Drop. Също така всеки панел може да се извади от общата част, така че да се показва като индивидуален прозорец. Потребителите могат да използват пре-дефинираните варианти или да разположат всички панели по удобен за тях начин.