Уроки unity 5 3d ігри на андроїд. Створення додатків для Android. Імпорт файлів і створення ігрових об'єктів

Unity - це движок, на якому будується більшість сучасних ігор на різних платформах. За допомогою движка реально створювати гри, орієнтовані на запуск на комп'ютерах (Windows, Linux, MacOS), мобільних телефонах, планшетних комп'ютерах (Android, iOS) і навіть ігрових приставках PlayStation, Xbox, Nintendo.

Як створювати ігри в Unity?

В основі Unity лежить компонентно-орієнтована концепція. По суті, будь-яка гра складається з маси об'єктів, розбавлених додатковими компонентами. Для прикладу, під час створення платформера ми створюємо GameObject, до нього додатково прикріплюємо графічну складову, що відповідає за відображення персонажа, і керуючий компонент, він забезпечує управління персонажем за рахунок миші, клавіатури, джойстика або тачскрін. Движок не накладає обмеження на кількість подібних модулів. До GameObject можемо додати стільки компонентів, скільки буде необхідно. Вся робота на движку будується на тому самому створенні GameObject і застосування до них відповідних компонентів.

Новачків може ввести в оману видима простота процесу, хоча це не так. Для створення унікальної і популярної гри доведеться з нуля писати масу компонентів. Якщо точніше, в середовищі Юніті це називається скриптом. Рідна мова створення скриптів - C #, але ще частково використовується JavaScript і Boo (обрізаний варіант Python). Створити власні компоненти нелегко, можна навіть сказати - це складна процедура, безпосередньо зав'язана на класичному програмуванні. Без наявності достатнього рівня знань в програмуванні доведеться несолодко.

Підтримувані платформи

Багато великих проектів воліють Unity через величезного списку платформ сумісних з двигуном. Готове додаток реально запустити на будь-якої комп'ютерної операційній системі, популярних мобільних платформах і SmartTV. Що вже говорити, навіть браузерні ігри і додатки для специфічних платформ ( зразок Tizen OS) Переважно розробляються на Юніті.

Однак, тут не все так гладко. При необхідності можна писати специфічні алгоритми, засновані на низкоуровневом коді, під той же самий Андроїд потрібно мати докладні знання Java.

Те ж саме справедливо і щодо iOS. Ще одна особливість iOS, що під неї розробляти можливо тільки з комп'ютера або планшета від Apple. При відсутності Macbook або аналогічного пристрою випуск гри швидко зупиниться і Unity тут зовсім ні до чого, Apple сама накладає подібне обмеження. Висновок простий: якщо в планах є iOS-розробка, заздалегідь слід підібрати відповідне пристрій для збирання.

Як і де розробити гру на движку?

Тривалий процес розробки ігор можемо проводити як в рамках Windows, так і Mac OS X. Вже існують версії редактора під Linux, але розраховувати на стабільну їх роботу поки що не доводиться. Велику частину часу зі створення гри розробник проводить всередині редактора Unity. Ще доводиться багато часу писати код скриптів, його створювати можемо або в стандартному MonoDevelop, або в будь-якому редакторі, розроблений третьою. Зараз активно користуються Visual Studio, а також Sublime Text, але тільки при належній налаштування.

Як швидко написати гру для Android на Unity

У нинішній час кожен може стати успішним розробником мобільних ігор або додатків, не докладаючи до цього титанічних зусиль. Прикладом такого випадку є Донг Нгуен, який розробив Flappy Bird. У грі не було ніякої складної механіки або графіки, але це не завадило їй стати популярною і приносити своєму творцеві по п'ятдесят тисяч доларів в день. Однак в грі не було нічого примітного. Все, що було потрібно для успіху, - опинитися в потрібному місці в потрібний час і трохи удачі. Подібне може статися і сьогодні, вам просто потрібна правильна ідея.

Щоб продемонструвати, наскільки легко написати щось подібне, сьогодні ми напишемо свою Flappy Bird за допомогою Unity всього за 10 хвилин.

Ігровий персонаж

Спочатку створіть новий проект і переконайтеся, що обрана опція 2D.

Завантажте свій спрайт птиці в сцену. Не забудьте включити фантазію!

Потім відрегулюйте розмір спрайту як вам подобається, перетягуючи його за кут в потрібному напрямку. Спрайт має бути видно у вікні ієрархії (hierarchy) зліва. У ньому видно всі об'єкти в сцені, і на даний момент їх повинно бути всього два: камера і птиця.

Перетягніть камеру на птицю і відпустіть. Камера повинна виявитися під птахом, це буде означати, що камера тепер «дитина» птиці. Тепер позиція камери буде фіксуватися щодо птиці. Якщо птах рухається вперед, то камера робить те ж саме.

Знову виберіть птицю в сцені або в вікні ієрархії. Ви побачите список опцій і атрибутів справа у вікні під назвою Inspector. Тут ви можете керувати різними змінними, прив'язаними до певного об'єкту.

Тепер натисніть на Add Component. Виберіть Physics2D\u003e Rigidbody2D - це готовий набір інструкцій для застосування гравітації до нашого персонажу. Натисніть на Constraints в цій панелі і виберіть freeze rotation Z. Це дозволить запобігти обертання птиці разом з камерою по колу.

Таким же чином додайте Polygon Collider, який говорить Unity, де знаходяться межі персонажа. Натисніть Play і побачите, як спрайт разом з камерою нескінченно падає вниз.

Поки все йде добре!

Тепер пора зайнятися польотами персонажа, благо це буде нескладно.

Спочатку потрібно створити C # -скріпт. Створіть для нього папку (клікніть правою кнопкою миші де-небудь в assets і створіть папку «Scripts»), зробіть клік правою кнопкою миші і виберіть Create\u003e C # Script.

Назвемо його «Character». Клацніть по ньому двічі, щоб відкрити його у вашій IDE, будь то MonoDevelop або Visual Studio. Потім додайте наступний код:

Public class Character: MonoBehaviour (public Rigidbody2D rb; public float moveSpeed; public float flapHeight; // Це потрібно для ініціалізації void Start () (rb \u003d GetComponent ();) // Update викликається один раз на кадр void Update () (rb .velocity \u003d new Vector2 (moveSpeed, rb.velocity.y); if (Input.GetMouseButtonDown (0)) (rb.velocity \u003d new Vector2 (rb.velocity.x, flapHeight);) if (transform.position.y\u003e 18 || transform.position.y< -19) { Death(); } } public void Death() { rb.velocity = Vector3.zero; transform.position = new Vector2(0, 0); } }

Цей код робить дві речі. Він змушує персонажа рухатися вперед зі швидкістю, яку ми визначимо в інспектора, і створює відчуття польоту птаха. Метод Update () викликається повторно протягом гри, тому все, що ви сюди помістіть, буде виконуватися безперервно. В даному випадку ми додаємо трохи швидкості нашого об'єкту. Мінлива rb є скриптом RigidBody2D, який ми застосували до нашого об'єкту раніше, тому коли ми пишемо rb.velocity, ми звертаємося до швидкості об'єкта.

Тап по екрану інтерпретується Unity як клік миші, якщо ви використовуєте мобільний пристрій. Після натискання ми змушуємо персонажа трохи піднятися вгору.

Мінлива moveSpeed \u200b\u200bвідповідатиме за швидкість руху, а змінна flapHeight - за збільшення висоти польоту птаха після кожного натискання. Оскільки ці змінні оголошені як public, ми зможемо змінити їх поза скрипта.

Метод Death () теж оголошений як public, що означає, що інші об'єкти і скрипти зможуть його викликати. Цей метод просто повертає положення персонажа в початок. Також він буде використовуватися кожен раз, коли персонаж буде залітати надто високо чи низько. Скоро ви зрозумієте, чому він оголошений саме як public. Рядок rb.velocity \u003d Vector3.zero; потрібна, щоб прибрати імпульс - ми ж не хочемо, щоб після кожної смерті персонаж падав все швидше і швидше?

Тепер можна виходити з IDE і додавати скрипт як компонент до персонажу. Для цього потрібно вибрати нашу птицю і натиснути Add Component\u003e Scripts\u003e Character. Тепер ми можемо визначати moveSpeed \u200b\u200bі flapHeight в інспектора (для цього і потрібні public -змінного). Дамо змінним значення 3 і 5 відповідно.

І ще: в інспектора потрібно додати тег до персонажу. Для цього клікніть там, де написано Tag: Untagged і потім виберіть Player в випадаючому списку.

перешкоди

Тепер додамо перешкоди: труби. Хтось в трубах знаходить гриби, а хтось - свою смерть.

Перетягніть спрайт труби в сцену в місце, де має бути перша перешкода, і назвіть його pipe_up.
Тепер створимо новий скрипт під назвою Pipe:

Public class Pipe: MonoBehaviour (private Character character; // Це потрібно для ініціалізації void Start () (character \u003d FindObjectOfType ();) // Update викликається один раз на кадр void Update () (if (character.transform.position.x - transform.position.x\u003e

Додайте цей скрипт до спрайту труби тим же чином, що і раніше. Таким чином, труба буде повертатися на екран після виходу за його ліву кордон. Ми тут ще нічого не зробили, але ще повернемося до цього.

Метод OnCollisionEnter2D () викликається кожен раз при взаємодії труби з персонажем. Після цього викликається створений раніше метод Death (), який повертає гравця в початкову точку.

Отже, у нас є одна труба, яка час від часу буде зникати і з'являтися на іншому кінці екрану. Вріжеш в неї - помреш.

перевернуті труби

Зараз у нас є тільки один спрайт труби. Давайте додамо ще один. Для цього клікніть правою кнопкою миші у вікні ієрархії, натисніть New 2D Object\u003e Sprite і потім виберіть спрайт, який хочете використовувати. Ще простіше буде просто перетягнути файл в сцену ще раз.

Назвіть цей спрайт pipe_down. У інспектора в частині Sprite Renderer виберіть опцію Flip Y, щоб перевернути трубу догори ногами. Додайте таке ж RigidBody2D.

Тепер напишемо новий C # -скріпт під назвою PipeD. У ньому буде схожий код:

Public class PipeD: MonoBehaviour (private Character character; // Це потрібно для ініціалізації void Start () (character \u003d FindObjectOfType ();) // Update викликається один раз на кадр void Update () (if (character.transform.position.x - transform.position.x\u003e 30) ()) void OnCollisionEnter2D (Collision2D other) (if (other.gameObject.tag \u003d\u003d "Player") (character.Death ();)))

префаб

Отже, нам достатньо цього коду, щоб зробити всю гру. Ми могли б пересувати труби на праву сторону екрану кожен раз, коли вони зникають, або скопіювати і вставити стільки труб, скільки ми хотіли б зустріти на протязі всієї гри.

Якщо піти першим шляхом, то переконатися, що труби коштують як треба після випадкової генерації, і підтримувати чесний хід речей було б складно. Після смерті персонажа вони могли б з'явитися в кілометрах від першої труби!

Якщо піти другим шляхом, то все закінчиться зайвим споживанням пам'яті, з випливають з цього уповільненням гри, і обмеженою реіграбельності, тому що все стоїть на одних і тих же місцях кожен раз.

Замість цього давайте скористаємося префаб. Якщо говорити просто, то ми перетворимо наші труби в шаблони, які потім зможемо використовувати для ефективного створення більшої кількості труб за бажанням. Якщо тут є програмісти, то вважайте скрипт Pipe класом, а труби - екземплярами цього об'єкта.

Для цього створіть нову папку «Prefabs». Потім перетягніть pipe_up і pipe_down з вікна ієрархії в папку.

Кожен раз, коли ви перетягуєте об'єкт з цієї папки в сцену, у нього будуть ті ж властивості, тому вам не потрібно буде постійно додавати компоненти. Більш того, якщо ви зміните розмір компонента в папці, це вплине на всі труби в грі, і вам не доведеться змінювати кожну з них окремо.

Як ви розумієте, це сильно заощадить наші ресурси. Також це означає, що ми можемо взаємодіяти з об'єктами з коду. Ми можемо створювати екземпляри наших труб.

Спочатку додайте цей код в умовний вираз в методі Update () скрипта Pipe, яке ми залишили порожнім:

Void Update () (if (character.transform.position.x - transform.position.x\u003e 30) (float xRan \u003d Random.Range (0, 10); float yRan \u003d Random.Range (-5, 5); Instantiate (gameObject, new Vector2 (character.transform.position.x + 15 + xRan, -10 + yRan), transform.rotation); Destroy (gameObject);))

Це потрібно для створення екземпляра нашого gameObject. В результаті виходить нова ідентична копія. У Unity завжди, коли ви використовуєте слово gameObject, воно посилається на об'єкт, до якого скрипт в даний момент прив'язаний - в нашому випадку до труби.

Ми генеруємо заново наші труби в випадкових варіаціях, щоб було веселіше.

Але замість того, щоб проробляти все той же в скрипті PipeD, ми генеруємо обидва об'єкти в одному місці. Таким чином ми можемо легко встановлювати положення другої труби щодо першої. Також це означає, що нам потрібно менше коду для PipeD.

Створіть public gameObject з ім'ям pipeDown. Потім поновіть код наступним чином:

If (character.transform.position.x - transform.position.x\u003e 30) (float xRan \u003d Random.Range (0, 10); float yRan \u003d Random.Range (-5, 5); float gapRan \u003d Random.Range (0, 3); Instantiate (gameObject, new Vector2 (character.transform.position.x + 15 + xRan, -11 + yRan), transform.rotation); Instantiate (pipeDown, new Vector2 (character.transform.position.x + 15 + xRan, 12 + gapRan + yRan), transform.rotation); Destroy (gameObject);)

Повертаємося назад в Unity і перетягуємо префаб pipe_down з папки з префаб (це важливо!) В місце, де написано «Pipe Down» (зауважте, як наш camel case замінюється пропуском) на спрайт труби pipe up. Якщо ви пам'ятаєте, ми визначили Pipe Down як public gameObject, що дає нам можливість визначати, чим є цей об'єкт звідки завгодно - в даному випадку через інспектор. Вибираючи префаб для цього об'єкта, ми переконуємося, що при створенні екземпляра труби він буде включати в себе всі атрибути і скрипт, які ми додали раніше. Ми не просто створюємо спрайт, але пересоздаём об'єкт з колайдером, який може вбити персонажа.

Все, що ми додамо в той же місце в скрипті PipeD - просто Destroy (gameObject), щоб труба саморуйнується при виході за ліву межу екрану.

Якщо ви зараз запустите гру, то екран буде просуватися далі автоматично, і ви помрете, якщо зіткнетеся з будь-якої з труб. Пролетить досить далеко, і ці труби зникнуть і з'являться знову попереду.

На жаль, між трубами велику відстань, і екран виглядає порожнім. Ми могли б виправити це, додавши кілька префабов в нашу сцену, щоб створити конвеєр постійно з'являються труб. Однак було б краще генерувати труби в скрипті. Це важливо, тому що в іншому випадку після смерті персонажа труби на початку шляху знищаться, і знову утворюється порожній простір.

Таким чином, ми можемо створювати кілька перших труб під час кожного завантаження гри і повертати все на свої місця після смерті персонажа.

нескінченний політ

Тепер створимо public -змінного pipe_up і pipe_down в скрипті Character. Це дасть вам можливість посилатися на створені об'єкти, перетягуючи префаб на об'єкт персонажа, прямо як коли ми додали pipe_down в скрипт Pipe.

Нам потрібно додати ці змінні:

Public GameObject pipe_up; public GameObject pipe_down;

Потім ми напишемо такий метод:

Public void BuildLevel () (Instantiate (pipe_down, new Vector3 (14, 12), transform.rotation); Instantiate (pipe_up, new Vector3 (14, -11), transform.rotation); Instantiate (pipe_down, new Vector3 (26, 14), transform.rotation); Instantiate (pipe_up, new Vector3 (26, -10), transform.rotation); Instantiate (pipe_down, new Vector3 (38, 10), transform.rotation); Instantiate (pipe_up, new Vector3 ( 38, -14), transform.rotation); Instantiate (pipe_down, new Vector3 (50, 16), transform.rotation); Instantiate (pipe_up, new Vector3 (50, -8), transform.rotation); Instantiate (pipe_down, new Vector3 (61, 11), transform.rotation); Instantiate (pipe_up, new Vector3 (61, -13), transform.rotation);)

Ми будемо викликати його один раз в методі Update () і один раз в методі Death ().

Після початку гри викликається Update (), і наші труби ставляться згідно заданої конфігурації. За рахунок цього перші кілька перешкод завжди будуть стояти на одному і тому ж місці. Після смерті гравця труби встануть на ті ж самі місця.

Поверніться в сцену в Unity і видаліть дві труби, які зараз там перебувають. Ваша «гра» буде виглядати просто як порожній екран з птахом. Натисніть Play і труби з'являться, після кількох перших їх положення буде визначатися випадковим чином.

На закінчення

Ось ми і зробили цілу гру! Додайте лічильник очок, спробуйте зробити його більш оригінальним і збільшуйте складність гри в міру просування. Також не буде зайвим зробити меню. Ще хорошою ідеєю буде знищувати труби на екрані після смерті персонажа. Як тільки ви з цим закінчите - вважайте, що готова до випуску в Play Store гра у вас в кишені! Колись схожа гра зробила іншого розробника дуже багатим, і це доводить, що вам не потрібно бути генієм-програмістом або мати за своєю спиною багатого видавця, щоб досягти успіху. Вам просто потрібна хороша ідея і десять хвилин!

Хочете писати програми під Android, але не знаєте, з чого почати? Тоді ознайомтеся з нашою великою для вивчення Android-розробки.

Всім привіт! Навчившись робити гри на цьому движку, я хочу вас навчити тому-ж. По-перше нам знадобиться сама Unity3d, будь-який редактор 3D моделей і прямі руки, що ростуть з плечей.

1. Вивчення програми

Для початку, рекомендую встановити Monodevelop! Давайте розберемося, що таке Unity. Unity - мультиплатформенна середовище розробки ігор. Саме через її простоти і зрозумілості кожен третій хоч раз робив на ній гри.

Розгляньте скрін вище:

  • Сцена - ваша пісочниця для творчості.
  • Проект - тут знаходяться всі анімації і моделі, звуки і текстури.
  • Для установки моделей в верхньому тулбаре вибирайте Assets-Import New Asset. Також можна Assets-Import Package-Custom Package. У другому випадку пакет повинен бути в расшіреніі.unity.
  • Ієрархія - всі об'єкти на сцені. Там ви створюєте батьків для об'єкта. Просто перемістіть в меню ієрархії об'єкт до іншого, і він причепиться. У підсумку вийде своєрідна папка.
  • Тулбар - список інструментів. Там ви можете включити 2D, 3D режим.
  • Інспектор - характеристика об'єкта, там ви додаєте анімації, скрипти і інше. Там ви можете використовувати інструменти: переміщення камери, переміщення об'єкта, розтяжка, розворот об'єкта.


Зараз ви бачите меню об'єкта в ньому ви можете додати анімацію, скрипти і інше.

Думаю, що з цим меню у вас не буде проблем.
Щоб створити будь-якої об'єкт клікайте.

Вообщем ми вивчили програму скоро можна буде вже писати свої ігри.

2. Створення простої гри

Для початку створимо територію Create-Terrain. Додаємо траву і дерева. Натиснувши на землю праворуч з'явиться вікно вибираємо дерева, траву.


Також створіть гори і нерівності. Потім завантажуйте Characher controller pack в проект. Після чого шукаємо у вікні з проектом Standart assets-Characters controller і вибираєте вид від першої особи (капсула) або від третьої (механік).
Якщо перша особа, то просто ставте його на землю. Якщо ж від третього, то треба завантажити анімацію. Також рекомендую встановити освітлення на сцені Create-Directional Light.


Для додавання музики перетягніть її на потрібний об'єкт.
Гра готова, але як її скомпілювати?

Для цього треба зайти в File-Build settings-player settings (для ярлика і назви). Вибираєте платформу і вуаля, готово. Для цього вам треба встановити Android SDK. Але там треба вказувати папку з SDK, причому треба не просто SDK, а саме API потрібного рівня (наприклад у Android 4.2 - API 17). Наприклад, щоб гра була на Android 4.0+ треба встановити ці API.

У наступній статті я розповім, як налаштувати управління під Android або iOS і навчимося писати скрипти самі.

Як швидко і відносно просто створити нескладну гру або додаток для Андроїда? Про це читайте в статті нижче, де розглядається робота з движком Unity3D.

Ви граєте в комп'ютерні ігри? Якщо так, то, напевно, в процесі проходження чергового ігрового блокбастера у Вас іноді виникали думки типу: "А ось тут, я б зробив не так!". А хочете самі побувати в ролі розробника? Тоді, пропоную Вам невелике, але дуже цікаве "пригода";)

Що таке движок і навіщо він потрібен?

Раніше, ще за часів перших комп'ютерів, ігри і програми створювалися так званим "хардкорним" методом. Тобто, для повноцінної розробки потрібно бути досить досвідченим програмістом, який досконально знає свою мову програмування і може практично всю гру (включаючи піксельну графіку і спецефекти!) Написати в простому Блокноті. Таких людей було небагато і вони дуже цінувалися (та й зараз цінуються) ...

Сьогодні ж поріг входження в тему програмування знизився в рази. І цьому сприяє не тільки доступність літератури і всіляких навчальних матеріалів, а й все більше спрощує процес розробки. У наші дні вже рідко можна зустріти справжніх "хардкорщиков", оскільки з'явилися досить зручні середовища розробки, які отримали назву "движки".

Суть движка в тому, що він дозволяє в спрощеному візуальному режимі імпортувати всі потрібні ігрові об'єкти, розставити їх на віртуальній сцені і налаштувати все їх параметри. Тобто, завданням програміста залишається лише правильно написати ігрову логіку!

Однак, за зручність роботи доводиться платити деяким збільшенням розміру проекту (іноді навіть в кілька разів!) В порівнянні з його аналогом, написаним старим "хардкорним" способом. Саме за це частина розробників движки не любить або ж намагається писати свої, в яких використовуються тільки необхідні їм компоненти ...

Але нам-то з Вами до Тру-програмістів далеко :) Тому займемося створенням нескладної гри для Android на базі популярного і потужного движка Unity3D.

Початок роботи з проектом в Unity3D

Отже, чому ми вирішили використовувати саме Unity3D:

  • можливість створювати повноцінні 2D і 3D гри;
  • можливість скомпілювати готову гру під будь-який пристрій;
  • відносна простота управління двигуном;
  • хороша розширюваність функціоналу за рахунок підключення плагінів;
  • відносно невеликий розмір підсумкової збірки гри (в порівнянні з іншими двигунами).

Головний козир Unity3D, природно, його багатогранність і многоплатформенность. Готову гру (можливо, з невеликими доробками) Ви можете перенести, хоч на ПК (з Windows, Linux або MacOS), хоч на Android, хоч на PlayStation або XBox! Для цього нам буде потрібно завантажити тільки сам движок, який, до речі, "важить" більше гігабайти і потрібні SDK (якщо планується розробка під мобільні платформи або консолі). Якщо Ви хочете зробити гру для Windows, то качати додатково нічого не потрібно, але оскільки, ми зібралися робити гру під Андроїд, то нам знадобиться завантажити ще й Android SDK (Software Development Kit). Раджу качати SDK в ZIP-архіві для більшої зручності роботи з ним.

Коли все буде завантажено, можете розпакувати в будь-яку зручну для Вас папку Android SDK, а потім приступайте до установки самого Unity3D. Встановлюється він, як і будь-яка звичайна програма під Windows, тому проблем з установкою бути не повинно. Після установки движок запуститься і нам для початку потрібно буде створити новий проект:

Для цього нам потрібно буде закрити всі привітальні і вступні віконця, а потім в меню "File" вибрати пункт "New Project". У віконці (див. Скріншот вище) нам запропонують вказати папку збереження проекту (її назва буде збігатися з назвою проекту), імпортувати деякі стандартні набори функцій (вони нам не потрібні) і вказати режим роботи. Як режим вибираємо 2D і тиснемо кнопку "Create". На цьому підготовча частина робіт завершена :)

Інтерфейс движка і ієрархія проекту

Після створення проекту він буде завантажений в робочий простір Unity3D:

Саме це робочий простір має модульну структуру і складається з декількох вкладених віконець, які можна переміщати, як Вам зручно. У мене воно налаштоване так (зліва направо і зверху вниз):

  1. Вікно Hierarchy - відображає ієрархічне положення активних і неактивних об'єктів на сцені. За замовчуванням єдиний об'єкт, який розташовується одразу на списку - Камера (Main Camera).
  2. Вікно Scene - відображає всю ігрову сцену і об'єкти на ній (в тому числі, камери, звуки, текстури і т.п.).
  3. Вікно Inspector - відображає всі властивості обраного в ієрархії або на сцені об'єкта і дозволяє їх правити, доповнювати або видаляти.
  4. Вікно Game - відображає ігровий світ, який видно в камеру і дозволяє вибирати розмір віртуального тестового вікна гри в пікселях. Також, дозволяє активувати розгортання ігрового вікна в повний розмір (Maximize on Play) і вмикати / вимикати відображення різної інформації для розробника.
  5. Вікна Project і Console. Вікно Project служить для навігації по ресурсах проекту: завантаженим зображенням, звукам, моделям і т.п. Також засобами даного вікна (контекстне меню) Ви можете створювати нові порожні ігрові об'єкти різних типів і скрипти. Вікно ж Console служить для виведення повідомлень про помилки (червоним), попереджень (жовтим) і різної, запитаної Вами налагоджувальної інформації (сірим).
  6. Вікно Assets Label - нижня частина вікна інспектора, в якій відображається превью вибраний у вікні Project об'єкта або файлу.

Крім Всього перерахованого вище, зверніть свою увагу на три кнопки вгорі по центру. Вони дозволяють запускати Ваш проект, ставити на паузу (іноді корисно при налагодженні щоб подивитися, що робиться в ієрархії, наприклад) і, відповідно, вимикати.

Створювати ми будемо симулятор музичного інструменту: індійських народних барабанів під назвою "табла", тому для початку роботи створимо в проекті дві порожні папки, в яких будуть зберігатися звуки і картинки. Створити нову папку можна, викликавши контекстне меню у вікні навігатора проекту (Project) і вибравши пункт "Folder" в списку "Create".

Тут варто сказати пару слів про те, як потрібно називати ці папки. Для простої гри, на кшталт нашого симулятора, в принципі, папки можна "обізвати" як завгодно, однак, є як мінімум два назви, які краще не використовувати, оскільки вони зарезервовані движком. Це назви Resources і Plugins. У великих проектах папку Resources створюють відразу і все ігрові "запчастини" (картинки, звуки, моделі, текстури і префаб) складують вже в неї (сортуючи по підпапках). У Plugins ж, як випливає з назви, зберігаються всі додаткові сторонні набори функцій (так звані "Ассет" (assets)), яких є досить багато на Asset Store - магазині розширень для Unity3D.

Імпорт файлів і створення ігрових об'єктів

Перед створенням нового ігрового проекту бажано заздалегідь підготувати всі необхідні для його роботи файли. У нашому випадку такими файлами є картинки і звуки. Імпортувати їх в проект найпростіше простим перетягуванням в потрібну папку. Почнемо з картинок ...

Після того, як зображення з'являться в нашій папці Images їх слід трохи налаштувати:

Справа в тому, що за замовчуванням Unity3D все додані в проект картинки стискає з втратою якості. Якщо така втрата нам не потрібна (особливо актуально для ігор з HD-графікою), то нам слід вибрати кожне зображення і у вікні Інспектора змінити значення параметра "Format" з "Compressed" на "Truecolor" у вкладці "Default". Також може знадобитися змінити параметр "Max Size", якщо він менше реальної ширини картинки (за замовчуванням - 1024 пікселів). Після всіх змін потрібно не забути натиснути кнопку "Apply", щоб застосувати їх. Аналогічні дії при необхідності здійснюємо для всіх інших зображень.

Тепер, давайте створимо з наших картинок ігрові об'єкти. Для цього достатньо просто перетягнути потрібне зображення у вікно Hierarchy. Картинка або 3D-модель будуть автоматично перетворені в об'єкт типу Game Object і відображені в початковій точці координат перед камерою.

Насамперед ми додали фонову картинку, яка повинна у нас відображатися на весь екран. Перевірити, чи так це, можна виділивши у вікні ієрархії камеру і подивившись на те, як відображається її рамка. На скріншоті вище видно, що частина нашого фону залишається поза огляду камери, тому, потрібно підлаштувати розмір цього огляду за допомогою перетягування рамки прямо на сцені або правки параметра "Size" у вікні Інспектора. У нашому випадку довелося змінити значення за замовчуванням (5) на 5.4.

Все, камеру більше не чіпаємо, а додаємо і налаштовуємо інші картинки. При додаванні ми бачимо, що деякі з них занадто великі для нашої гри. Зменшити їх можна або фізично в графічному редакторі, або засобами движка. Спробуємо останній спосіб. Для цього виділяємо зображення в вікні ієрархії, а у вікні Інспектора змінюємо значення "Scale" для координати X і Y з 1 на 0.5 (тобто, зменшуємо наполовину). Там же бажано, щоб уникнути накладок, привласнити всім ігровим об'єктів (крім фону) ненульовий порядок шарів (Order in Layer):

Останнім кроком у підготовці ігрових об'єктів з картинок буде "навішування" на них коллайдеров (collider). У Unity3D колайдери використовуються в якості детекторів взаємодії між об'єктами. Тобто, по суті, на нашу картинку надаватися віртуальна оболонка, яка може реєструвати дотику до неї.

Щоб додати коллайдер на об'єкт, вибираємо його у вікні ієрархії, а потім у вікні Інспектора тиснемо кнопку "Add Component". У списку компонентів шукаємо Physics 2D (звичайна 3D фізика в нашому режимі не спрацює) і там з усіх варіантів нам найбільше підходить "Circle Collider 2D". Його і вибираємо. Навколо нашого об'єкта з'явиться зелена обведення, яка і відображає кордону коллайдера. Залишилося тільки відзначити галочкою пункт "Is Trigger" щоб наш коллайдер тільки реєстрував натискання і більше ніяк НЕ взаємодіяв з навколишнім ігровим простором:

Аналогічні дії повторюємо для всіх об'єктів, що залишилися. Відрізнятися від інших об'єктів буде тільки наш фон. Для нього ми застосуємо Box Collider 2D і виставимо Position Z більше нуля, щоб засунути коллайдер і сам фон на задній план (це нам стане в нагоді трохи пізніше).

Робота зі звуком

Зі звуком в Unity 3D на перший погляд все виглядає дещо заплутано. Але, спробуємо розібратися по порядку :)

Насамперед нам потрібно перетягнути все звуки в папку Sounds і теж трохи їх налаштувати:

Якщо рівень гучності у всіх звуків у Вас спочатку відрегульований, то все, що буде потрібно зробити, це відключити 3D-обробку звуків. У тривимірних іграх ця обробка потрібна для того, щоб імітувати наближення джерела звуку при наближенні до нього камери. Але в 2D нам це ні до чого, тому виділяємо по черзі кожен звук і знімаємо у нього галочку "3D Sound".

Тепер можемо приступати до додавання звуків до ігрових об'єктів. Для цього нам потрібно виділити по черзі кожну кнопку і додати їй новий компонент "Audio Source" з розділу "Audio". Коли компонент буде доданий, вибираємо відповідний кнопці "Audio Clip" і знімаємо активну за замовчуванням галочку "Play On Awake" (грати при появі):

Коли все звуки будуть прикріплені до потрібних кнопок, прийде час для самого цікавого - скриптинга ...

перший скрипт

Перед тим, як почати розбирати наш перший скрипт, напевно, варто пару слів сказати про саму систему скриптинга в Unity 3D.

Юніті дозволяє писати код відразу на трьох мовах: JavaScript (точніше, його трохи модифікованою версією UnityScript), C # і Boo. У ряді книг і посібників можна зустріти думку, що для початківців скриптинг в Unity простіше освоювати на прикладі JavaScript. Однак, ця мова не настільки зручний, як інші, і в майбутньому Вам, швидше за все, доведеться переучуватися. Тому, краще відразу почати з вивчення C # (Boo теж непоганий, але по ньому мало навчальних матеріалів).

Тепер про те, де писати код. За замовчуванням редактором коду в Unity 3D є IDE MonoDevelop. Перевага цього середовища розробки в тому, що в ній є підказки для швидкого введення стандартних методів, класів і функцій, а також система перевірки синтаксису. Однак, для мене мінусом стала громіздкість і висока ресурсомісткість. Благо, в настройках Unity можна встановити в якості текстового редактора, що завгодно, тому я для себе "підвісив" легкий і функціональний Notepad ++ (майже всі приклади будуть показані в ньому).

І останнє. Природно, що без довідкових матеріалів в освоєнні всіх премудростей движка Ви далеко не підете, тому ось список з декількох тлумачних Інтернет-ресурсів по темі Unity 3D:

  • http://docs.unity3d.com/ru/current/Manual/UnityManualRestructured.html - офіційний мануал по движку з частковим перекладом на російську мову (з'явився недавно і поки працює іноді нестабільно);
  • http://docs.unity3d.com/ru/current/ScriptReference/index.html - офіційний мануал-довідник по скриптингу англійською;
  • http://unity3d.ru/distribution/index.php - російськомовний форум розробників під Unity 3D;
  • http://habrahabr.ru/post/141362/ - цикл уроків по створенню тривимірних ігор на Хабрахабр;
  • http://msdn.microsoft.com/ru-ru/library/618ayhy6.aspx - офіційний довідник по C # від Microsoft російською.

Ну і, щоб довго не тягнути, пропоную одразу створити перший скрипт. Під скрипти, якщо їх багато, краще виділити окрему папку, але у нас гра буде простенька, тому ми можемо створити скрипт прямо в кореневій папці проекту. Для цього викликаємо контекстне меню в віконці Project, вибираємо список Create і тиснемо "C # Script". Назвемо наш новий скрипт, наприклад, Sounds і відкриємо його подвійним клацанням миші. Прибравши стандартні методи Update і Start, а потім, прописавши потрібні отримаємо такий вигляд скрипта:

Якщо Ви не перенастроювати редактор, то наш скрипт буде відкриватися в MonoDevelop. Розберемо його структуру ...

Фактично кожен скрипт на C # складається з трьох основних частин:

  1. У самому верху перераховуються бібліотеки, які потрібно підключити для роботи скрипта (наприклад, "using Unity.Engine" підключає роботу самого движка, а "using System.Collections" - бібліотеку, яка містить ряд вбудованих класів для роботи скрипта під різними системами).
  2. Оголошення класу і змінних. У C # немає поняття скрипта, як такого. Замість нього використовується термін "класу", в який входить ряд методів і функцій. Хоча, по суті, в контексті Unity 3D це практично одне і те ж :) Головне пам'ятати, що ім'я класу має збігатися з ім'ям, яке ми дали скрипту. Особливість же змінних в C # в тому, що вони обов'язково (крім тимчасових, які оголошуються в самому скрипті) повинні бути типізовані. На практиці це означає, що для змінної повинен бути зазначений рівень доступу (private або public) і тип (int, float, bool або, як у нас в скрипті, AudioClip. При цьому ім'я змінної можна давати будь-яке. А можна їй відразу і значення приписати.
  3. Набір методів і функцій. Методом в C # називається практично будь-яка функція, яка виконує певні дії. В принципі, в літературі по Unity 3D їх і називають функціями, але, якщо ми говоримо про C # як окремій мові програмування, то це, таки, методи :). Функціями в чистому вигляді в Юніті є, наприклад, стандартні функції виведення звуку, відтворення елементів GUI і т.п., які використовуються всередині методів.

Знаючи тепер структуру скрипта, неважко зрозуміти його зміст, який зводиться до наступного ... У класі (скрипті) Sounds ми оголошуємо 9 змінних типу AudioClip з потрібними нам для зручності їх розрізнення іменами. Робимо їх обов'язково публічними (приватні не показуються в редакторі, а нам на них потрібно буде "вішати" звуки саме через редактор). А потім в тілі скрипта використовуємо стандартний метод "void OnMouseDown ()". Раніше він відповідав тільки за обробку кліка мишею, але в нових версіях інтерпретується і як дотик до сенсорного екрану. У ньому пишемо умови, за якими ми перевіряємо імена натиснутих коллайдеров і, якщо виявляємо натискання одного з них, виводимо відповідний звук (використовуємо стандартну функцію audio.PlayOneShot ();).

При написанні коду уважно стежте за наявністю всіх відкривають і закривають дужок інакше будете постійно отримувати звіти про помилки в Консолі і не зможете запустити свій проект взагалі! Також звертайте увагу на використання в іменах методів і функцій великих літер. Вони теж часто бувають причинами помилок. І, природно, виконуйте всі знаки (точки, двокрапки і дужки), коротше, синтаксис мови. Спочатку буде важко, але з часом Ви почнете писати з нуля без помилок!

Коли скрипт буде готовий, виділіть її та в вікні Інспектора призначте кожній змінній свій звук. Тепер нам залишилося тільки застосувати наш скрипт до об'єктів на сцені. Найпростіше це зробити, знову ж таки, за допомогою перетягування скрипта прямо на потрібний ігровий об'єкт в списку ієрархії:

Якщо скрипт був перетягнути правильно, то він повинен з'явитися у вікні Інспектора у того об'єкта, на який ми його перетягнули. Відповідно, перетягуємо скрипт на всі об'єкти, які повинні звучати в грі і можемо пробувати запускати її. При натисканні по нашим ігровим кнопкам тепер, нарешті, буде звучати заданий звук!

Введення в GUI

В принципі, Гра у нас вже функціонує, але якась вона занадто "лиса". Бракує в ній чогось ... А, хоча б, написи з назвою, що перед нами знаходиться! Іншими словами, потрібно реалізувати який-небудь виразний призначений для користувача інтерфейс.

Власне, GUI і є скорочення від англ. "Graphical User Interface", тобто графічний інтерфейс користувача. Традиційно він включає в себе такі компоненти, як:

  • кнопки;
  • вікна;
  • текстові області;
  • чекбокси і / мул радиокнопки;
  • слайдери (смуги прокрутки) і т.п.

У Unity 3D Все це (і навіть дещо понад те) присутній в повній мірі. Головне, навчитися ним користуватися! Розглянемо, як засобами GUI в Юніті можна зробити простий напис-заголовок.

Для цього створимо новий скрипт з ім'ям Interface і змінимо його наступним чином:

Розглянемо уважно скрипт на скріншоті. Тут ми пишемо лише одну публічну змінну нового для нас типу GUIStyle. Цей тип дозволяє у візуальному режимі змінювати оформлення елементів, до яких даний стиль приписаний. Стилі зручно використовувати, якщо є багато елементів інтерфейсу одного типу (наприклад, кнопок), але у них повинен бути різний вигляд.

Далі ми створюємо кнопку ( "GUI.Button"), яка має наступний синтаксис: умова - 4 координати (відступ по горизонталі від лівого краю, відступ по вертикалі від верхнього краю, ширина, висота) - видимий текст в лапках і далі, опціонально, вказівка \u200b\u200bстилю. Усередині умови кнопки прописуються потрібні функції. У нашому випадку ми прописали перехід на сайт розробників ( "Application.OpenURL (" ");").

Скрипти з GUI можуть працювати з будь-яких ігрових об'єктів, але зазвичай їх радять "вішати" на камеру, що ми і зробимо, перетягнувши скрипт на об'єкт Main Camera. Тепер, якщо його виділити в вікні ієрархії, то у вікні Інспектора ми зможемо побачити публічну змінну нашого стилю, розгорнувши яку, отримаємо повний доступ до налаштувань цього стилю!

Ми можемо вказати колір тексту і текстуру для фону в будь-яких ситуаціях (для кнопки потрібно прописати три її варіанти (Normal - звичайний вид, Hover - при наведенні і Active - при натисканні), задати відступи і налаштувати шрифт. За замовчуванням єдиним доступним в Unity 3D шрифтом є Arial, однак Ви можете вручну завантажити в проект будь-якої іншої і застосувати його в поле "Font", налаштувавши все супутні параметри.

Що цікаво і водночас не зовсім зручно, елементи GUI не відображаються на сцені, поки ми не запустимо проект, тому підгонка параметрів кожного елемента може зайняти чимало часу. Запустимо проект і подивимося, як буде виглядати наша кнопка, створена вище:

Зміна інтерфейсу за умовою і статичні змінні

Ми вже зробили багато, але покращувати завжди є куди :) Тому пропоную в якості останнього прикладу створити віконце довідки, яким зазвичай нормальні розробники постачають свої ігри та програми. Для цього додамо в папку з зображеннями картинку для такої кнопки у вигляді знака питання і зробимо з неї ігровий об'єкт. Навіс на нього коллайдер і напишемо скрипт з ім'ям, наприклад, "Help" такого змісту:

В даному скрипті у нас є дві змінні. Перша змінна визначає скін, який буде використовуватися для всіх елементів інтерфейсу, описаних в даному класі. На відміну від стилів, роботу з якими ми розглянули вище, скіни дозволяють змінювати вигляд не тільки окремого елемента, до якого вони приписані, а всіх елементів певного типу відразу. До того ж, на відміну від стилів, скіни до елементів не прописуються, а оголошуються відразу для всього методу і працюють до тих пір, поки не буде оголошено ще один скін. Також слід пам'ятати, що скіни існують не тільки у вигляді змінних, але і як окремі файли. Тому, перед оголошенням скіна потрібно відразу створити його у вікні "Project" з контекстного меню: "Create" - "GUI Skin".

Друга змінна у нас логічна (або по-іншому булева). Вона може мати тільки два значення: "істина" (true) або "брехня" (false). В силу своєї бінарної природи така змінна відмінно підійде для реалізації всіляких перемикачів. У нашому випадку, вона буде відповідати за відображення тексту з описом нашої гри.

Однак, якщо подивитися уважно, то можна помітити, що у останньої змінної є один чудовий параметр - "static". Додавання до змінних такого параметра дозволяє зробити їх статичними і отримувати до них доступ з інших скриптів!

Але повернемося до решти коду. Уже знайомий нам метод "void OnMouseDown ()" тут буде служити перемикачем змінної "isVisible" за допомогою простенького умови. Однак, після умови є ще одна функція. Функція ця ( "Debug.Log ();") служить для виведення "на льоту" в Консоль значень потрібних нам змінних (їх ми вписуємо без лапок в дужках). Як бачите, всередині функції можна поєднувати як незмінний текст (пишеться в лапках), так і змінні (без лапок). Головне, тільки щоб між усіма даними був знак "+".

Далі по тексту скрипта у нас йде метод відтворення інтерфейсу ( "void OnGUI () ()"), всередині якого ми бачимо оголошення нового скіна ( "GUI.skin \u003d HelpSkin;") і нового елемента інтерфейсу типу GUI.Box. На відміну від кнопки, бокс є неактивним елементом і служить зазвичай для виведення різних текстових або графічних даних.

Зверніть увагу на те, як ми задали позиціонування для боксу. Тут все значення вказані не безпосередньо, а за допомогою математичних виразів, що, по суті, є аналогом "гумової верстки" в веб-розробці. Проблема в тому, що при вказівці точних розмірів GUI-елементів при різних дозволах екрану вони не будуть адаптуватися і можуть бути або занадто дрібні ми, або, навпаки, великими. У наступній версії движка розробники обіцяють зробити GUI адаптивними, але поки доводиться перекручуватися :(

Останнім кроком на шляху до успіху буде настройка нашого скіна. У змінну скрипта вказуємо файл скіна, а потім виділяємо цей файл у вікні проекту. Як і для інших файлів, налаштування скіна будуть відображені у вікні Інспектора. Тут шукаємо той елемент, який підлягає зміні (в нашому випадку Box), розкриваємо його і налаштовуємо аналогічно розглянутому вище стилю:

Щоб побачити, чи правильно працює наш скрипт, запустимо проект і спробуємо натиснути на кнопку довідки:

Зараз все працює, але не завжди зручно натискати кнопку довідки, щоб назад приховати опис. Більш звично для зникнення всяких повідомлень ткнути в будь-який вільний місце, ніж цілитися в кнопки. І ось тут нам якраз і стане в нагоді те, що ми зробили змінну "isVisible" статичної, а також, накладених на фонову картинку коллайдер ...

Повернемося до нашого найпершого скрипту ( "Sounds"), який відстежував натискання на кнопки для програвання звуків. У нього (точніше, всередину методу "void OnMouseDown ()") нам досить буде прописати всього один рядок:

if (this.name! \u003d "HelpButton") (Help.isVisible \u003d false;)

Цією рядком ми задаємо умову: якщо ім'я натиснутого коллайдера Не \u200b\u200bрівняється імені кнопки довідки, то змінна "isVisible" в скрипті "Help" буде дорівнювати "false". Тільки потрібно щоб змінна "isVisible" точно мала приписку "static", інакше отримаємо помилку.

Тепер при запуску ми побачимо, що наше вікно довідки закривається при натисканні не тільки на кнопку в правому верхньому кутку, але і при торканні до будь-якої вільної частини екрану. Єдине, що можна ще поліпшити - зробити, щоб віконце ховалося і після натискання на ньому самому ... Це буде Вашим "домашнім завданням";) Скажу тільки, що ДУІ-бокс потрібно буде змінити на аналогічно оформлену кнопку, знову ж таки, з налаштуванням скіна і прописування функції, що змінює змінну "isVisible". Все, далі мовчу :)

Компіляція гри і збереження проекту

Нарешті, у нас все працює! Це означає, що прийшов час зберігати нашу гру і тестувати на реальному пристрої. А для цього її потрібно скомпілювати у виконуваний файл (для Windows, наприклад, в EXE, а для Android в APK).

Якщо Ви хочете скомпілювати гру для ПК, то Вам не доведеться робити ніяких попередніх налаштувань. Однак, для Андроїда потрібно буде спочатку підключити скачаний нами на самому початку Android SDK. Робиться це досить просто: йдемо в меню "Edit", викликаємо пункт "Preferences" і в віконці переходимо на вкладку "External Tools". Тут шукаємо рядок "Android SDK Location" і в ній вказуємо шлях до розпакованого архіву з SDK (див. Скріншот нижче). До речі, тут же можна змінити активний за замовчуванням монструозної текстовий редактор MonoDevelop на свій улюблений :)

І ось настав момент істини! Йдемо в меню "File" і шукаємо там пункт "Build Settings". У віконці нам потрібно буде відразу додати сцени для збірки. Якщо сцена одна (як у нашому проекті), то для цього буде достатньо натиснути кнопку "Add Current". Якщо ж їх кілька, то потрібно буде відкрити кожну з них і аналогічним чином внести в список сцен, а потім за допомогою перетягування налаштувати потрібну їх черговість:

Наступним кроком вибираємо платформу збірки (ми плануємо гру під Андроїд, значить, його і вибираємо) і тиснемо внизу кнопку "Player Settings". У вікні Інспектора відкриється ряд налаштувань з яких деякі є обов'язковими або дуже бажаними. До бажаним відноситься вказівка \u200b\u200bназв компанії-розробника, програми та її іконки (Company Name, Product Name і Default Icon, відповідно) у верхній частині списку налаштувань.

У нижній же частині в розділі "Other Settings" є два обов'язкових параметра: "Bundle Identifier" і "Bundle Version". Версія за замовчуванням проставляється, як 1.0, а ось ідентифікатор доведеться створити вручну і, бажано, унікальний. Складатися він повинен з трьох частин, відокремлених один від одного крапками: зарезервоване слово "com", потім назва компанії-розробника, а в кінці назва самого додатка.

Інші налаштування збірки можете змінювати на свій розсуд або не змінювати зовсім. Головне, що тепер компіляція вже зможе запуститися. Для цього достатньо натиснути кнопку "Build" в віконці "Build Settings" і дочекатися, поки програм видасть нам готове, упаковане в APK-файл додаток :)

висновок

На цьому наш урок-огляд по створенню найпростіших додатків для Андроїд добігає кінця. Щоб Ви могли повторити все, про що ми говорили, в кінці статті я дам посилання на архів, в якому будуть зберігатися всі ресурси гри у вигляді окремої папки (якщо захочете зробити все з нуля) і у вигляді файлу з розширенням unitypackage. Останній дозволяє імпортувати в Юніті відразу весь проект, включаючи залежності і т.п.

Щоб імпортувати наш проект (і, до речі, будь-які плагіни, викачані з Інтернету або Assets Store) потрібно зайти в меню "Assets", вибрати пункт "Import Package", а в ньому "Custom Packege", після чого вказати шлях до нашого файлу і натиснути кнопку "Import". До речі, зробити повний бекап свого проекту, зі збереженням в такий unitypackage Ви можете з цього ж меню ( "Assets") кліком по пункту "Export Package".

Начебто, все :) Як людина, яка сама освоював Unity 3D з нуля, в статті я постарався дати відповіді на максимальну кількість питань і висвітлити основні нюанси роботи з движком, які виникають на перших порах. Але, можливо, комусь цього буде мало, тому, якщо у Вас виникнуть питання, можете звертатися або прямо до мене на пошту, або на форумі: чим зможу - допоможу!

Бажаю всім удачі і успішної реалізації всіх проектів!

P.S. Дозволяється вільно копіювати і цитувати цю статтю за умови вказівки відкритою активного посилання на джерело та збереження авторства Руслана Тертишного.

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

Готові продукти, створені в Unity 3D, сумісні практично з усіма популярними платформами - починаючи від мобільних телефонів і закінчуючи SMART TV-телевізорами.

Можливості програми:

  • той, якого навчають движок Unity;
  • гнучкий багатофункціональний редактор;
  • висока швидкість компіляції;
  • легкий в освоєнні інтерфейс;
  • сумісність з великою кількістю платформ.

Принцип роботи

Для використання програми потрібно завантажити платформу Unity Hub, а через неї можна випробувати функції безкоштовної версії Personal. Вона доступна при обсягах монетизації до 100 тисяч доларів щорічно.

Крім Free-варіанту можна підписатися на дві інші розширені версії:

Unity Plus (~ $ 25 щомісяця) - надає обмежений доступ до сервісу Customer Success Advisor, збирає інформацію про збої на призначених для користувача пристроях, моніторить відгуки.

Unity Pro (~ $ 125 щомісяця) - максимальний варіант підписки. Забезпечує підтримку з боку професійних розробників, дозволяє отримати пріоритетний доступ до підтримки з боку творців програми, включає поліпшені можливості для моніторингу продуктивності і збору статистики.

Побудова всіх ігрових дій базується на досить якісному фізичному ядрі програми (PhysX), від якого і залежить поведінка моделей. Завдяки можливості імпорту текстур і об'єктів, продукту можна надати унікальність або використовувати інтегровані розробником інструменти. Важливо зрозуміти, що кожен створений в цьому конструкторі об'єкт - це певний набір скриптів і подій, управляти якими ви можете самостійно.

Для професійної роботи з Unity 3D потрібен певний час на знайомство з інтерфейсом і можливостями програми. Для цього в Інтернеті можна знайти безліч роликів або відвідати спеціалізовані курси, які проводяться в багатьох великих містах.

Слід врахувати, що для роботи з 3D-графікою потрібно мати сучасний комп'ютер з апаратною відкритий.

плюси:

  • практично безмежна функціональність для створення проектів;
  • підтримка браузерної 3D-графіки;
  • сумісність з ігровими приставками і сучасними телевізорами;
  • велика кількість інструментів для візуалізації;
  • є безкоштовна версія.

мінуси:

  • для створення якісного продукту необхідні специфічні знання;
  • немає можливості дуже тонкої настройки фізичного ядри програми;
  • відсутня переклад інтерфейсу на російську мову.

Завантажити Юніті 3Д можна не тільки для підготовки конкурента популярної онлайн-іграшці Джаггернаут (яка теж намальована інструментами героя нашого огляду), але і для створення шикарних тривимірних презентацій. Нехай це займе трохи більше часу, але вау-ефект для аудиторії гарантований.

Для знайомства з можливостями платформи досить завантажити безкоштовну версію Unity 3D. При необхідності доступу до вихідного коду, погляньте в сторону платних версій.

аналоги:

  • Game Editor - безкоштовний додаток для створення ігор;
  • Construct 2 - популярний ігровий конструктор, відрізняється простим інтерфейсом.
  • Construct 2 - потужна програма для створення 2D-проектів.