logo

Разбиране на Prefabs и инстанциране

Създаването и унищожаването на герои или обекти е много често срещано във всяка игра. Инстанцирането означава създаване на обекта в съществуване. Обектите се появяват или раждат или генерират в игра, враговете умират, GUI елементите изчезват и сцените се зареждат през цялото време на играта.

Prefabs са много полезни, когато искате да създадете сложни GameObjects или колекция от GameObjects по време на изпълнение. В сравнение със създаването на GameObjects от нулата с помощта на код, инстанцирането на префаб с помощта на код е по-добро и има много предимства.

Нека разберем какво представляват сглобяемите конструкции; тъй като prefabs се считат за важни за разбирането как работи инстанцирането в Unity.

Сглобяеми конструкции са като чертежи на GameObject. Така че можем да кажем, Prefabs са копие на GameObject, което може да бъде дублирано и поставено в сцена, дори и да не е съществувало, когато е била създадена сцената; с други думи, prefabs могат да се използват за динамично генериране на GameObjects.

Да създадем сглобяема конструкция; за това трябва да плъзнете желания GameObject от йерархията на вашата сцена в активите на проекта.

Разбиране на Prefabs и инстанциране

Сега, за да инстанцираме 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, като щракнете с десния бутон върху сцената от раздела Йерархия.

java, ако е друго
Разбиране на Prefabs и инстанциране

Прикачете този скрипт файл (Instantiator.cs) към новосъздадения компонент на GameObject от раздела Инспектор.

Сега в променливата Diamond плъзнете тази сглобяема конструкция, която създадохме.

Разбиране на Prefabs и инстанциране

Когато стартирате играта сега, натискането на клавиша за интервал ще създаде нов обект Diamond, идентичен на този, който използвахме за създаването на сглобяемата конструкция. Можете да видите, че всеки диамант е създаден в йерархията на обектите. Причината да не можете да ги видите да се показват в играта е, че за момента всички те се създават точно един върху друг. Но можете да го проверите от раздела Йерархия. Всеки път, когато натиснете интервал, той ще се покаже в раздела като диамант (клонинг).

Разбиране на Prefabs и инстанциране