logo

Înțelegerea prefabricatelor și instanțierea

Instanțierea și distrugerea personajelor sau obiectelor este foarte comună în orice joc. Instanciarea înseamnă aducerea obiectului în existență. Obiectele apar sau apar sau se generează într-un joc, inamicii mor, elementele GUI dispar și scenele sunt încărcate tot timpul în joc.

Prefabricatele sunt foarte utile atunci când doriți să instanțiați GameObjects complicate sau o colecție de GameObjects în timpul rulării. În comparație cu crearea GameObjects de la zero folosind cod, instanțiarea prefabricatelor folosind cod este mai bună și are multe avantaje.

Să înțelegem ce sunt prefabricatele; deoarece prefabricatele sunt considerate importante pentru a înțelege cum funcționează instanțierea în Unity.

Prefabricate sunt ca planurile unui GameObject. Deci putem spune că prefabricatele sunt o copie a unui GameObject care poate fi duplicat și introdus într-o scenă, chiar dacă nu exista atunci când scena a fost realizată; cu alte cuvinte, prefabricatele pot fi folosite pentru a genera GameObjects în mod dinamic.

Să creăm un prefabricat; pentru aceasta, trebuie să trageți GameObject-ul dorit din ierarhia scenei în proiectul Assets.

Înțelegerea prefabricatelor și instanțierea

Acum, pentru a instanția un GameObject, apelăm metoda Instantiate() în scriptul nostru. Această metodă este disponibilă în MonoBehaviour, ia un GameObject ca parametru, astfel încât știe ce GameObject să creeze sau să dubleze. Are, de asemenea, diferite suprascrieri pentru modificarea transformării obiectului nou instanțiat, precum și pentru parenting.

Acum creați un nou script numit Instantiator.cs și copiați următorul cod în el.

 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); } } } 

În programul de mai sus, am folosit metoda GetKeyDown a clasei Input pentru a verifica dacă jucătorul a apăsat un anumit buton în timpul ultimului cadru. Metoda GetKeyDown() returnează true dacă tasta specificată de enumerarea KeyCode (care este folosită pentru a lista toate tastele posibile de pe o tastatură standard) este apăsată în acel cadru.

Salvați scriptul. Și acum, creați un GameObject gol făcând clic dreapta pe scenă din fila Ierarhie.

Înțelegerea prefabricatelor și instanțierea

Atașați acel fișier script (Instantiator.cs) la Componenta GameObject nou creată din fila Inspector.

Acum, în variabila Diamond, trageți prefabricatul pe care l-am creat.

Înțelegerea prefabricatelor și instanțierea

Când rulați jocul acum, apăsând bara de spațiu va crea un nou obiect Diamond identic cu cel pe care l-am folosit pentru a crea prefabricatul. Puteți vedea că fiecare diamant este creat în ierarhia obiectelor. Motivul pentru care nu le puteți vedea apărând în joc este că, deocamdată, toate sunt create exact una peste alta. Dar îl puteți verifica din fila Ierarhie. De fiecare dată când apăsați pe o bară de spațiu, aceasta va apărea în filă ca un diamant (clonă).

Înțelegerea prefabricatelor și instanțierea