Префаби (prefabs) та ассети (assets). Курс Unity для митців (8-9 уроки)

💡 Усі статті, обговорення, новини для початківців — в одному місці. Приєднуйтесь до Junior спільноти!

Всіх вітаю! Це восьмий і дев’ятий уроки курсу — Unity Essentials (Основи Unity), і продовження другого блоку «Досліджуйте Unity».

Попередні уроки

Курс розроблений компанією Unity, перекладений і адаптований для проєкту «Марсіанський Чайник». Деякі терміни навмисно не перекладені в уроці для того, щоб Вам було легше орієнтуватись у редакторі Unity. Підтримати проєкт можна на сторінці патреон Марсіанський Чайник.

Керуйте GameObjects за допомогою prefabs

Відеоверсія уроку:

У проектах Unity, які ви створюєте, зазвичай багато GameObjects. У багатьох випадках ваші GameObjects будуть копіями інших — наприклад, у шутері від першої особи може бути багато копій одного і того ж ворожого персонажа, ті самі валуни, за якими можна ховатися, і ті самі дерева, зброя та предмети, які потрібно збирати.

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

Prefab — це asset, який є шаблоном GameObject. З префабу можна створити кілька копій, які називаються екземплярами. Зміна prefab asset також спричиняє зміни всіх його екземплярів. Щоб перетворити багато дерев на кактуси, ви можете просто змінити один prefab дерева!

У цьому туторіалі ви познайомитеся з prefabs. Ви будете використовувати prefabs для створення багатьох падаючих об’єктів у поточному проекті та керування ними.

Створіть prefab

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

1. Перейменуйте свою сферу на «BouncyBall».

2. Переконайтеся, що BouncyBall має звичайний матеріал і фізичний матеріал. Також змініть розмір сфери, якщо хочете.

3. Як ви зробили з матеріалами, зробіть папку для prefabs. У вікні Project виберіть папку Assets і клацніть правою кнопкою миші, щоб вибрати Create > Folder.

4. Перейменуйте нову папку на «Prefabs».

5. Відкрийте папку так, щоб у правій панелі вікна проекту (у Two Column Layout) відображалася порожня папка, де ви побачите повідомлення «This folder is empty».

6. У вікні Hierarchy перетягніть BouncyBall у папку Prefabs. Новим asset у вашій папці Prefabs із синім значком куба є ваш prefab.

В Hierarchy BouncyBall GameObject тепер також став синім, щоб ви знали, що цей об’єкт є екземпляром вашого prefab.

Створіть екземпляри prefab

Створивши prefab, легко виготовити багато кульок, які впадуть на вашу конструкцію:

1. З папки Prefabs у вікні Project перетягніть BouncyBall prefab у свою сцену.

2. Перетягніть ще кілька екземплярів у свою сцену, до 10.

3. Розташуйте нові екземпляри BouncyBall так, щоб вони падали на вашу структуру. Для більшого відскоку розташуйте їх вище (збільште Position Y)!

Порада: утримуйте натиснутою клавішу Shift або в Scene view, або в Hierarchy, щоб вибрати всі нові екземпляри одночасно, а потім розташуйте їх як групу.

4. Запустіть програму та спостерігайте, як сфери падають та підскакують!

Поки що це не надто захоплююче, чи не так? Зрештою, ви могли б скопіювати BouncyBall кілька разів, щоб отримати такий же результат без використання prefab. Але на наступному кроці ви побачите силу prefabs.

Оновіть екземпляри prefab у prefab mode

Що, наприклад, якщо ви хочете, щоб усі ваші екземпляри BouncyBall стали іншого кольору? Ви можете оновити колір для всіх екземплярів, оновивши свій prefab у prefab mode, спеціальному режимі редагування, у якому ви можете змінити prefab у вікні Scene.

Щоб увійти в prefab mode та відредагувати prefab:

1. В Hierarchy виберіть екземпляр prefab, а потім натисніть стрілку праворуч від рядка.

Порада: по дефолту prefab mode відображається в контексті вашої сцени. Щоб редагувати prefab окремо, натисніть Alt, вибираючи стрілку.

Prefab є єдиним GameObject, який ви можете редагувати у prefab mode.

2. У вікні Project відкрийте папку Materials та перетягніть інший матеріал на prefab у вікні Scene. Виберіть матеріал, який буде помітно відрізнятися.

3. Виберіть Save у верхньому правому куті вікна Scene, щоб зберегти зміни. (Якщо ви пропустите цей крок, вам буде запропоновано зберегтися, коли ви будете виходити з prefab mode.) Ви також можете ввімкнути Auto Save, щоб всі зміни зберігалися, щойно ви їх внесете.

4. Щоб вийти з prefab mode, виберіть стрілку у верхньому лівому куті вікна Hierarchy.

Усі ваші екземпляри BouncyBall будуть мати новий матеріал!

Це простий приклад, але prefabs досить потужні. Розглянемо ці приклади:

  • У моделі міста 100 паркоматів. Ви можете змінити текст відразу на кожному паркоматі.
  • У прототипі гри колега моделює ворожого персонажа, поки ви працюєте над ігровим процесом. Ваш «ворог» є prefab примітивом капсули. Коли модель ворога буде готова до імпорту, Ви можете просто замінити об’єкт капсули в prefab на нову модель.

Замініть (override) властивості prefab

Коли ви змінюєте властивість одного екземпляра prefab, ця властивість називається перевизначенням (override), оскільки ви змінюєте налаштування prefab по дефолту. Вікно Inspector допомагає відстежувати ці зміни.

Щоб внести зміни в екземпляри prefab з замінами:

1. У режимі перегляду сцени виберіть один зі своїх екземплярів prefab BouncyBall.

Коли цей об’єкт вибрано, подивіться на верхню частину вікна Inspector. Існує додатковий розділ під назвою Prefab, що містить елементи керування prefab. (Кнопка Open — це ще один спосіб редагувати prefab у prefab mode.)

2. Використовуючи компонент Transform в Inspector, змініть масштаб на осях x, y і z цього BouncyBall. Зробіть зміни помітними у вікні Scene.

Синя лінія на лівому полі інспектора вказує, що властивість Scale відрізняється від базової властивості у prefab.

3. Використовуючи компонент Sphere Collider в Inspector, виберіть піктограму кола, щоб змінити Physic material на None. Тепер сфера не відскоче, коли вдариться об землю.

4. Застосуйте інший матеріал до цього GameObject, щоб він відрізнявся від інших.

5. Запустіть програму. Зверніть увагу, що єдина сфера, яка не відскакує і має інший матеріал, — це та, яку ви відредагували. Якщо ви хочете застосувати ці зміни до всіх екземплярів цього prefab, вам потрібно буде застосувати їх до базового prefab.

Тепер ви перевизначили три властивості: Scale, Physic material і Regular material.

6. За допомогою елементів керування Prefab у верхній частині Inspector виберіть Overrides, щоб побачити список компонентів, які відрізняються від prefab.

7. Припустимо, що ви передумали видаляти Bouncy Physic material. Виберіть компонент Sphere Collider зі списку Overrides, щоб переглянути дві версії компонента: Prefab Source і Override.

8. Щоб повернути Sphere Collider до вихідних налаштувань, виберіть Revert у верхній частині версії компонента Override. Ця куля знову зможе використовувати Bouncy Physic material.

9. Скажімо, ви хочете, щоб усі ваші кулі були такими ж великими, як ця. Щоб застосувати перевизначення в компоненті Transform до базового prefab, поверніться до спадного меню Overrides і виберіть Transform > Apply > Apply to Prefab «BouncyBall». Усі кульки змінять розмір!

Перевизначення корисні, якщо ви хочете вносити зміни до своїх prefabs одразу або протестувати зміни, перш ніж застосувати їх до кількох GameObjects. Далі Ви побачите, як організувати різні варіанти своїх prefabs.

Створіть prefab variants

Ви можете створювати мережі варіацій за допомогою prefab variants, які є prefabs на основі інших prefabs.

Prefab variants значно полегшують створення серії взаємопов’язаних prefabs, які нададуть вашому проекту однорідний вигляд. Наприклад, у проекті з багатьма деревами ви можете створити base prefab дерева, а потім створити prefab яблуні та base prefab персикового дерева.

Коли ви внесете зміни до base prefab дерева, вони з’являться на всіх деревах. Коли ви внесете зміни у prefab персикового дерева, вони з’являться лише на персикових деревах.

Щоб створити prefab вашого BouncyBall:

1. Виберіть екземпляр BouncyBall, над яким ви працювали, матеріал якого відрізняється від інших.

2. З Hierarchy перетягніть цей екземпляр у папку Prefabs. Ви побачите підказку створити новий prefab або prefab variant.

3. Виберіть prefab variant. (Якщо ви виберете Original Prefab, то зміни в original prefab не поширюватимуться на prefab variant.)

4. У папці Prefabs у вікні Project перейменуйте новий збірний елемент, наприклад на «RedBouncyBall».

5. Щоб створити більше куль, перетягніть нові екземпляри prefab на вашу сцену та розташуйте їх так, щоб вони падали на вашу структуру.

Тепер ви побачите, як працюють збірні варіанти, виконуючи три експерименти.

Експеримент 1: Змініть prefab variant

6. Відкрийте новий prefab (RedBouncyBall у нашому прикладі) і змініть його Scale на щось дуже велике, наприклад 5, 5, 5, і поверніться до перегляду сцени.

Порада: Ви можете двічі клацнути на prefab у вікні Project, щоб відкрити його в

prefab mode.

Як і слід було очікувати, всі нові екземпляри стали більшими, але екземпляри, засновані на оригінальному prefab BouncyBall, залишились незмінними.

Експеримент 2: Змініть base prefab

7. Відкрийте prefab BouncyBall в prefab mode.

8. У вікні Inspector знайдіть компонент Sphere (Mesh Filter) та його властивість Mesh. Використовуючи засіб вибору (значок кола), змініть mesh на capsule.

Усі кулі змінили форму, як великі, так і звичайні, тому що prefab RedBouncyBall є prefab variant від BouncyBall, і тому всі екземпляри RedBouncyBall успадковують ці зміни.

Експеримент 3: Змініть перевизначену властивість

9. Відкрийте prefab BouncyBall у prefab mode та змініть його scale на 1, 1, 1 та поверніться до перегляду сцени.

Оригінальні екземпляри BouncyBall стали меншими, але екземпляри RedBouncyBall залишились незмінними. Це сталося тому, що prefab variant RedBouncyBall перевизначає BouncyBall у властивості Scale. Зміни в масштабі original prefab все ще замінюються значеннями prefab variant.

Вкладені prefabs

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

Спробуйте самостійно вкласти prefabs:

1. Створіть порожній 3D GameObject і перетягніть його до папки Prefabs. Дайте назву вашому prefab.

2. Відредагуйте prefab у prefab mode.

3. Перетягніть інші prefabs з папки Prefabs у свій новий prefab.

4. Додайте ці нові об’єкти до своєї сцени і подивіться, як вони падають!

Порада: якщо один або кілька об’єктів у вкладеному prefab мають Physic material, то окремі prefabs діятимуть незалежно, а складна форма розпадеться, коли впаде. Однак, якщо жоден з об’єктів не має Physic material, складні форми будуть триматися разом, коли падають.

Більше речей, які можна спробувати

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

Використовуйте prefabs для створення різноманітних форм з різними розмірами, матеріалами та фізичними матеріалами. Спробуйте деякі з цих технік:

  • Створюйте набори падаючих об’єктів з різними кольорами (materials), масою (Mass в компоненті Rigidbody) і підстрибуванням (Physic material), все на основі prefabs.
  • Створіть складні фігури за допомогою вкладених prefabs, а потім змініть prefab, який ви вкладали.
  • Зробіть prefab variant, а потім змініть властивості original prefab. Чи зможете ви передбачити, що станеться?

За допомогою prefabs Ви можете створювати і керувати багатьма GameObjects. Завдяки трансформаціям, матеріалам, фізичним матеріалам і компоненту Rigidbody Ви стали на шлях створення витончених 3D-світів. Однак вам знадобиться більше, ніж кубики та сфери. У наступному туторіалі Ви побачите, як імпортувати більш складні GameObjects у свої проекти, не створюючи їх з нуля.

Отримайте 3D assets

Відеоверсія уроку:

Unity Engine — це місце, де assets об’єднуються, щоб створити інтерактивний досвід, але це не обов’язково місце створення цих assets. У цьому туторіалі пояснюється, як 3D assets створюються за допомогою 3D Digital Content Creation tools (3D DCCs) і як Ви можете отримати assets, створені за допомогою цих інструментів, із Unity Asset Store. Ми покажемо Вам, як імпортувати деякі assets, які стануть у нагоді в цьому навчальному проекті.

3D DCC

3D Digital Content Creation tools (DCCs), такі як Maya, ZBrush, і Blender, дозволяють художникам створювати середовища, моделі та персонажів.

У цих програмах художники моделюють 3D-об’єкти, створюють rig, щоб моделі можна було анімувати, анімують персонажів, щоб вони рухалися певним чином, і текстурують, щоб надати моделям колір і відтінок. Приклад цього наведено нижче.

3D assets, створені в DCC, переносяться в real-time движки, такий як Unity, де вони інтегруються в більший проект, як-от гра, симуляція або анімаційний фільм.

Ресурси для 3D assets у Unity

У редакторі Unity можна створювати тривимірне мистецтво та середовище, використовуючи інструмент під назвою ProBuilder. ProBuilder має обмежену функціональність у порівнянні з виділеними DCC, але він корисний для художників, які хочуть швидко моделювати 3D-об’єкти, не використовуючи зовнішній 3D редактор.

Не у всіх є час вивчити 3D DCC або бюджет, щоб найняти когось для створення 3D арту для них, в той же час є багато онлайн-ресурсів, де можна отримати високоякісні assets. На додаток до таких сайтів, як CGTrader, Sketchfab і Turbosquid, які пропонують 3D-моделі для будь-яких цілей, Unity Asset Store є неоціненним ресурсом для арту, спеціально розробленого з урахуванням вимог Unity.

Отримайте assets з Asset Store

Unity Asset Store — це зручна платформа для творців assets, щоб поділитися або продати свою роботу, а для авторів real-time програм ця платформа допомагає знайти assets, готові до використання. Ці assets включають 3D-моделі, матеріали, анімацію, UI, скрипти та все інше, що може знадобитися для вашого проекту.

1. Перейдіть до Unity Asset store (це посилання відкриється у вашому браузері по дефолту) і увійдіть, використовуючи свій Unity ID.

Підказка: все, що ви придбаєте через Asset Store, буде пов’язано з вашим обліковим записом Unity і буде доступним у редакторі, в який ви зайшли з тим самим Unity ID.

2. На вкладці пошуку введіть «materials», щоб знайти доступні assets матеріалів.

3. У розділі Ціна, у панелі фільтрів, виберіть Free Assets.

4. Виберіть будь-який безкоштовний asset, що містить матеріали. Ми рекомендуємо Yughues Free Ground Materials. Обов’язково обирайте assets, сумісні з версією Unity, яку ви використовуєте.

5. Виберіть Add to My Assets.

6. Коли відкриється діалогове вікно, виберіть Open in Unity. Пакет відкриється у вікні Package Manager.

7. Виберіть Download.

8. Виберіть Import.

9. Відкриється вікно Import Unity Package з переліком вмісту пакета. У більшості випадків вам потрібно залишити вибраним весь вміст пакета. У нижньому правому куті вікна виберіть Import.

Аssets будуть додані до папки Assets вашого проекту Unity. Коли цей процес буде завершено, закрийте вікно Package Manager.

10. Виберіть один із матеріалів і перетягніть його на платформу. Тепер матеріал додано до вашого GameObject.

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини про геймдев

👍ПодобаєтьсяСподобалось1
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі