logo

Розуміння префабів і інстанціювання

Створення екземплярів і знищення персонажів або об’єктів дуже поширене в будь-якій грі. Інстанціювання означає створення об’єкта. Об’єкти з’являються, породжуються або генеруються в грі, вороги гинуть, елементи GUI зникають, а сцени завантажуються весь час у грі.

Префаби дуже корисні, коли ви хочете створити екземпляр складних GameObjects або колекцію GameObjects під час виконання. Порівняно зі створенням GameObjects з нуля за допомогою коду, створювати префаби за допомогою коду краще, і це має багато переваг.

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

Збірні конструкції схожі на креслення GameObject. Тож ми можемо сказати, що Prefabs — це копія GameObject, яку можна скопіювати та помістити в сцену, навіть якщо вона не існувала, коли створювалася сцена; іншими словами, префаби можна використовувати для динамічного створення GameObjects.

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

Розуміння префабів і інстанціювання

Тепер, щоб створити екземпляр GameObject, ми викликаємо метод Instantiate() у нашому сценарії. Цей метод доступний у MonoBehaviour, приймає GameObject як параметр, тому він знає, який GameObject створити або скопіювати. Він також має різні перевизначення для зміни трансформації щойно створеного об’єкта, а також батьківства.

Тепер створіть новий сценарій під назвою Instantiator.cs і скопіюйте в нього наступний код.

 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Instantiator : MonoBehaviour { public GameObject Diamond; // Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Space)) { Instantiate(Diamond); } } } 

У наведеній вище програмі ми використали метод GetKeyDown класу Input, щоб перевірити, чи гравець натиснув певну кнопку під час останнього кадру. Метод GetKeyDown() повертає true, якщо клавішу, визначену переліком KeyCode (яка використовується для переліку всіх можливих клавіш на стандартній клавіатурі), натиснуто в цьому кадрі.

Збережіть сценарій. А тепер створіть порожній GameObject, клацнувши правою кнопкою миші на сцені на вкладці Hierarchy.

зображення як фон в css
Розуміння префабів і інстанціювання

Прикріпіть цей файл сценарію (Instantiator.cs) до щойно створеного компонента GameObject на вкладці «Інспектор».

Тепер у змінній Diamond перетягніть цей префаб, який ми створили.

Розуміння префабів і інстанціювання

Коли ви зараз запускаєте гру, натискання клавіші пробілу створить новий об’єкт Diamond, ідентичний тому, який ми використовували для створення префабу. Ви можете бачити, що кожен діамант створюється в ієрархії об’єктів. Причина, чому ви не бачите, як вони з’являються в грі, полягає в тому, що наразі всі вони створюються точно один над одним. Але ви можете перевірити це на вкладці Ієрархія. Щоразу, коли ви натискаєте пробіл, він відображатиметься на вкладці як діамант (клон).

Розуміння префабів і інстанціювання