logo search
Процес дистанційного навчання на базі тривимірного віртуального робочого середовища

1.3 Середа Unity як інструмент розробки

Це мульти-платформний інструмент для розробки двох - і тривимірних додатків та ігор, що працює під операційними системами Windows і OS X. Створені за допомогою Unity програми працюють під операційними системами Windows, OS X, Android, AppleiOS, Linux, а також на ігрових приставках Wii, PlayStation 3 і Xbox 360. Є можливість створювати інтернет-додатки за допомогою спеціального модуля, що підключається до браузера Unity, а також за допомогою експериментальної реалізації в рамках модуля AdobeFlashPlayer. Пізніше від підтримки Flash відмовилися. Програми, створені за допомогою Unity, підтримують DirectX і OpenGL. [ 12 ] характеризується наступними можливостями:

Сценарії на C #, JavaScript (модифікація) і Boo;

Ігровий движок повністю увязаний з середовищем розробки. Це дозволяє прямо в редакторі відчувати гру;

Робота з ресурсами можлива через простий Drag&Drop.

Інтерфейс редактора настроюється;

Здійснено система успадкування обєктів;

Підтримка імпорту з дуже великої кількості форматів;

Вбудована підтримка мережі;

Є рішення для спільної розробки - Asset Server;

Також можна використовувати відповідний користувачеві спосіб контролю версій. Наприклад, Tortoise SVN або SourceGear;

До особливостей даного середовища розробки можна віднести

широкі можливості імпорту

повністю настроюється і доступний більшості людей інтерфейс

кроссплатформенность

гнучкість і розширюваність

гнучка цінова політика

доступно для VITV і epichnoetv

підтримка фізики тканини (PhysXCloth)

AssetsStore, так званий магазин компонентів

наявність безкоштовної версії з деякими обмеженнями

скіннінг на CPU

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

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

Ресурси (Assets) проекту - це будівельні / складові блоки всіх проектів Unity, в якості яких можуть бути використані файли зображень (текстур), 3D -моделей, звукові файли, які будуть використовуватися при створенні в якості ресурсів. Тому в будь-якій папці проекту Unity завжди існує підкаталог з імям Assets, де зберігаються всі файли ресурсів.

Коли-небудь ресурс (наприклад, геометрична 3D-модель) використовується в сцені гри, він стає в термінології Unity ігровим обєктом (GameObject). Всі ці обєкти спочатку мають хоча б один компонент, що задає його положення в сцені і можливі перетворення (компонент Transform). Змінні компонента Transform визначає положення (position), поворот (rotation) і масштаб (scale) обєкта в його локальної декартовій прямокутній системі координат X, Y, Z. Наявність змінних у кожного компонента обумовлює можливість звернення до них з відповідної програми (скрипта).

Компоненти (components) в Unity3d мають різне призначення: вони можуть впливати на поведінку, зовнішній вигляд і багато інших функцій обєктів, до яких прикріплюються (attaching). Unity надає безліч компонентів різного призначення.

Для забезпечення інтерактивності різних 3D -додатків в Unity3d використовуються скрипти, які також розглядаються середовищем як компоненти. Крім JavaScript, Unity3d також надає можливість використовувати для написання скриптів мови C # і Boo (похідний від мови Python). Для написання скриптів можна скористатися вбудованим редактором Unity3d MonoDevelop.

В якості мови для написання скриптів в Unity застосовуються C #, JavaScript і Boo. Найбільш пріоритетними мовами для нас були C # і JavaScript.

Обидві мови використовують як синтаксичної основи мова програмування C. Зокрема, від нього успадковані без змін :

позначення початку / кінця блоку коду фігурними дужками;

позначення, асоціативність і пріоритет більшості вбудованих операцій (привласнення, арифметичні, логічні, побітові операції, операції інкремента / декремента);

синтаксис опису та використання змінних і функцій (порядок « тип імя», використання модифікаторів, обовязковість дужок для функцій, опис формальних параметрів);

синтаксис всіх основних конструкцій: умовного оператора, циклів, оператора множинного вибору;

відсутність процедур (їх замінюють функції типу void);

найменування вбудованих елементарних типів (крім bool, в JavaScript цей тип називається boolean);

використання крапки з комою

Все це призводить до того, що програми на JavaScript і C # зовні на перший погляд виглядають надзвичайно схоже на C -програми.

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

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

Підхід C # більше нагадує C + +. Внутрішні класи в C # мають доступ тільки до статичних членам зовнішнього класу, а для доступу до нестатичних членам потрібно явно вказувати примірник зовнішнього класу. Локальні внутрішні класи в C # не підтримуються, обробка подій у ньому не вимагає таких класів, оскільки будується на інших механізмах.старше, ніж C # і побудований на великою і активною користувача базі. JavaScript домінує в курсах програмування американських університетів і коледжів, і літератури з JavaScript сьогодні набагато більше, ніж по C #. #, В свою чергу, розвивається швидше, набагато слабкіше обмежуючи себе в додаванні нових проблемно- орієнтованих можливостей. Особливо ця тенденція проявилася у версії C # 3.0, в якій, наприклад, зявилися SQL - подібні запити. Нові можливості при цьому будуються так, щоб мова залишалася мовою загального призначення. # - Мова відносно новий. Microsoft вивчила існуючі мови, такі як Java, Delphi і VisualBasic, і змінила деякі аспекти мови для кращої відповідності потребам деяких типів додатків.

Це визначило наше рішення у виборі мови. C #, виразно, набагато більш пристосований для роботи в проектах нашого типу, завдяки своїй гнучкості, стрімкому розвитку і загальної адаптованості.

РОЗДІЛ 2

ОПИСАННЯ ПРОЕКТУ ТА ЙОГО СТВОРЕННЯ