Основний "профі" Uinty3D - це те, що він швидко божевільний. Я не говорю тут про продуктивність, а про швидкість розвитку. Ти маєш:
- Уніфікований конвеєр активів. Зовсім не потрібно витрачати час на підсистему ресурсів, жодна помилка підпрограм імпорту для запису та виправлення: просто опустіть файл у папку, і він працює.
- Інтегрований редактор рівнів. Не потрібно витрачати час на інструменти рівня: просто переходьте до справи.
- Чудова підтримка налаштування та налагодження: всі ваші змінні геймплея відображаються правильно під час гри, і їх можна змінювати і на льоту - і все це без написання жодного рядка коду. Призупиніть гру в будь-який час або покрокуйте один за одним код.
- Досить обширна бібліотека готових компонентів. Візуалізація, звук, фізика, елементи керування - вже написано багато кодового коду.
- Моно як хост сценарію. Хоча можна сперечатися про переваги мови C # як мови, бібліотека базового класу Mono пропонує безліч функцій. Колекції, введення / виведення, багатопотоковість та шалено виразний LINQ значно прискорюють розвиток.
Також Unity3d справді хороший на декількох платформах. Звичайно, ви не можете створити, скажімо, гру Windows .exe, а потім магічним чином «просто працювати» на iPhone; але Єдність наближається до цього. Що потрібно - це "налаштування" більше, ніж "перенесення".
Звичайно, в деяких випадках Unity3D не є ідеальним. Мережевий мультиплеєр, інтегрований в Unity, добре для деякої однорангової гри в локальній мережі, але все, що потребує центрального сервера, вимагає написати весь код мережі з нуля. Система графічного інтерфейсу Unity є досить вигадливою і повільною, тому створення складних інтерфейсів у грі - це біль. Однак усі інші системи графічних інтерфейсів гри, які я бачив, теж болючі, тому одна з них Unity не така вже й погана.
І, звичайно, Unity3D трохи менш гнучка, ніж "ігрові двигуни", такі як OGRE, які пропонують лише бібліотеку / вихідний код. Його продуктивність не є найвищою, і оскільки у вас є лише сценарій пісочниці, ви не можете використовувати деякі хитрі хакі низького рівня для її покращення. Наприклад, якщо вбудований рендерінг Unity з якихось причин не задовольняє вас, ви не можете написати свій власний (ну, могли б, але це буде працювати через сценарії, і, швидше за все, буде занадто повільним і занадто великим клопотом ). Тим не менш, з Unity можна робити практично все, доки ти не проти втратити трохи продуктивності.
Однак, найбільшим «проти» Unity3D є контроль над джерелами. Як уже було сказано, власний сервер активів Unity коштує досить копійки. І це смокче, справді, дуже важко. Він навіть не має розгалуження. Хоча Unity3D теоретично підтримує сторонні системи SCM, їх використання теж є небезпечним. Я бачив, як налаштування імпорту "магічно" змінюються після здійснення SVN, або параметри всіх об'єктів зникають після використання Perforce. Все це можна вирішити, але все одно, Unity3D + контроль джерела = біль.
Отже, насправді відповісти на ваше запитання. Я вважаю , що Unity3D є одним з кращих, якщо не краще, вибору ігрового движка для «маленьких» ігор. Особливо в стадії прототипу.
Це означає, що якщо ми говоримо про освітній проект, я рекомендую його проти. Щоб дізнатися, як працюють ігри, краще написати їх на якомога нижчому рівні. Ігрові двигуни - чудовий інструмент; але щоб використовувати його для досягнення максимальних прибутків, потрібно зрозуміти, як вони працюють, і чому вони так працюють. І найкращий спосіб навчитися цьому - написати власний ігровий движок - навіть якщо в кінцевому підсумку це виявиться шаленим.