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.
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.
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.
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).