logo

Razumevanje Prefabs in instanciranja

Instanciranje in uničevanje likov ali predmetov je zelo pogosto v vsaki igri. Instanciranje pomeni ustvarjanje predmeta. Predmeti se pojavijo ali ustvarijo ali generirajo v igri, sovražniki umrejo, elementi GUI izginejo in prizori se nalagajo ves čas v igri.

Montažne konstrukcije so zelo uporabne, ko želite instancirati zapletene GameObjects ali zbirko GameObjects med izvajanjem. V primerjavi z ustvarjanjem GameObjects iz nič z uporabo kode je instanciranje montažnih objektov z uporabo kode boljše in ima veliko prednosti.

Razumejmo, kaj so montažne hiše; ker se prefabs štejejo za pomembne za razumevanje, kako instanciranje deluje v Unity.

Montažne konstrukcije so kot načrti GameObject. Tako lahko rečemo, da so Prefabs kopija GameObjecta, ki jo je mogoče podvojiti in postaviti v sceno, tudi če ni obstajala, ko je bila scena narejena; z drugimi besedami, montažne objekte je mogoče uporabiti za dinamično generiranje GameObjects.

Ustvarimo montažno; za to morate povleči želeni GameObject iz vaše hierarhije prizorišča v sredstva projekta.

Razumevanje Prefabs in instanciranja

Zdaj, da ustvarimo primer GameObject, pokličemo metodo Instantiate() v našem skriptu. Ta metoda je na voljo v MonoBehaviour, vzame GameObject kot parameter, tako da ve, kateri GameObject ustvariti ali podvojiti. Ima tudi različne preglasitve za spreminjanje preoblikovanja na novo instanciranega objekta, kot tudi nadrejevanje.

Zdaj ustvarite nov skript z imenom Instantiator.cs in vanj kopirajte naslednjo kodo.

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

V zgornjem programu smo uporabili metodo GetKeyDown razreda Input za preverjanje, ali je igralec med zadnjim okvirjem pritisnil določen gumb. Metoda GetKeyDown() vrne true, če je v tem okvirju pritisnjena tipka, ki jo določa enum KeyCode (ki se uporablja za seznam vseh možnih tipk na standardni tipkovnici).

Shranite skript. In zdaj ustvarite prazen GameObject tako, da z desno miškino tipko kliknete prizor na zavihku Hierarchy.

Razumevanje Prefabs in instanciranja

Pripnite to skriptno datoteko (Instantiator.cs) na novo ustvarjeno komponento GameObject na zavihku Inspector.

Zdaj v spremenljivki Diamond povlecite to montažno konstrukcijo, ki smo jo ustvarili.

Razumevanje Prefabs in instanciranja

Ko zdaj zaženete igro, boste s pritiskom na preslednico ustvarili nov predmet Diamond, ki je enak tistemu, ki smo ga uporabili za ustvarjanje prefaba. Vidite lahko, da je vsak diamant ustvarjen v hierarhiji objektov. Razlog, zakaj jih ne morete videti v igri, je ta, da trenutno vsi nastajajo natanko eden nad drugim. Vendar ga lahko preverite na zavihku Hierarhija. Vsakič, ko pritisnete preslednico, se prikaže v zavihku kot diamant (klon).

Razumevanje Prefabs in instanciranja