Instancing (вставка екземпляра, Інстансування)¶
Вступ¶
Створення одної сцени та додавання до неї вузлів може працювати для маленьких проєктів, але по мірі збільшення проєкта в розмірах і складності, кількість вузлів може швидко стати некерованою. Щоб вирішити це, Godot дозволяє розділити проєкт на будь-яку кількість сцен. Це дає вам потужний інструмент, який допоможе організувати різні компоненти вашої гри.
В Сцени та вузли ви дізналися, що сцена - це сукупність вузлів, організованих у структурі дерева, з одним вузлом в якості кореня дерева.

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

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

На малюнку вище Сцена B була встановлена в Сцену А в якості вузла-нащадка.
Зразок інстансування¶
Щоб краще зрозуміти, як створювати екземпляр (instancing), давайте завантажимо зразок проєкту: instancing.zip
.
Розпакуйте цей проєкт куди завгодно. Потім відкрийте Godot і додайте цей проєкт до керівника проєктів за допомогою кнопки 'Імпортувати':

Перейдіть до витягнутої папки та відкрийте файл "project.godot", який ви можете знайти в ній. Після цього новий проєкт з’явиться у списку проєктів. Відредагуйте проєкт, натиснувши кнопку «Редагувати».
Цей проєкт містить дві сцени: "Ball.tscn" і "Main.tscn". Сцена м'яча ("Ball.tscn") використовує RigidBody2D (тверде тіло 2D) для забезпечення фізичної поведінки, тоді як головна сцена («Main.tscn») має набір перешкод для зіткнення з м'ячем (використовується StaticBody2D (статичне тіло 2D)).


Відкрийте сцену Main
та виберіть кореневий вузол:

Ми хочемо додати екземпляр сцени Ball
в якості нащадка до сцени Main
. Натисніть іконку "ланцюжка" (при наведенні на неї курсора спливе підказка "Створити екземпляр файла сцени як вузол.") і виберіть файл Ball.tscn
.

М'яч буде розміщений у верхньому лівому куті області екрана (це (0, 0)в координатах екрана). Клацніть по ньому та помістіть десь біля верхнього центру сцени:

Натисніть «Відтворити» і спостерігайте, як м'яч падає в нижню частину екрана:

Додавання декількох екземплярів¶
Ви можете додавати будь-яку кількість екземплярів на сцену за допомогою повторного натискання кнопки "Екземпляр", або натисканням екземпляра кульки із наступним натисканням кнопки "Дублювати" (Ctrl-D), щоб дублювати його:

Знову запустіть сцену і усі кульки впадуть.

Редагування екземплярів¶
Відкрийте сцену `` Ball '', натисніть на неї `` PhysicsMaterial '' та встановіть для властивості `` Bounce`` значення `` 1``.

Натисніть «Відтворити». Зверніть увагу, що всі м'ячі тепер стрибають сильніше. Оскільки всі м'ячі створені на основі збереженої сцени, то зміни в цій сцені впливатимуть на всі екземпляри м'ячів.
Ви також можете налаштувати окремі екземпляри. Встановіть значення Bounce (відскок) назад на 0
, а потім, у сцені Main
, виберіть один із створених м'ячів. Такі ресурси, як PhysicsMaterial
(фізичний матеріал) за замовчуванням поширюються на всі екземпляри, тому нам потрібно зробити його унікальним. Клацніть стрілку вниз і виберіть "Зробити унікальним". Встановіть його Bounce
(відскок) в 1
і натисніть кнопку «Відтворити».

Зауважте, що поруч із налаштованою властивістю з’являється сіра кнопка «повернутися». Якщо ця кнопка присутня, це означає, що ви змінили властивість у вставленій сцені. Тепер навіть якщо ви зміните цю властивість в початковій збереженій сцені, спеціальне значення залишиться незмінним. Натискання кнопки повернення поверне властивість до значення збереженої сцени.
Висновки¶
Instancing (створення екземплярів) може бути корисним, коли ви хочете створити багато копій одного і того ж об'єкта. Також екземпляри можна створити в коді за допомогою GDScript, дивіться Instancing (продовження).