Vytváranie inštancií a ničenie postáv alebo predmetov je v každej hre veľmi bežné. Instanciácia znamená uvedenie objektu do existencie. Objekty sa objavujú, spawnujú alebo generujú v hre, nepriatelia umierajú, prvky GUI miznú a scény sa v hre neustále načítavajú.
Prefabrikáty sú veľmi užitočné, keď chcete vytvoriť inštanciu komplikovaných GameObjects alebo kolekciu GameObjects za behu. V porovnaní s vytváraním GameObjects od začiatku pomocou kódu je vytváranie inštancií prefabrikátov pomocou kódu lepšie a má to mnoho výhod.
Poďme pochopiť, čo sú prefabrikáty; pretože prefabrikáty sa považujú za dôležité na pochopenie toho, ako funguje inštancia v Unity.
Prefabrikáty sú ako plány GameObject. Môžeme teda povedať, že prefabrikáty sú kópiou objektu GameObject, ktorý možno duplikovať a vložiť do scény, aj keď v čase vytvárania scény neexistoval; inými slovami, prefabrikáty možno použiť na dynamické generovanie GameObjects.
Vytvorme prefabrikát; na to musíte presunúť požadovaný GameObject z hierarchie scény do aktív projektu.
Teraz, aby sme vytvorili inštanciu objektu GameObject, zavoláme v našom skripte metódu Instantiate(). Táto metóda je dostupná v MonoBehaviour, berie ako parameter GameObject, takže vie, ktorý GameObject vytvoriť alebo duplikovať. Má tiež rôzne prepísania na zmenu transformácie novo vytvoreného objektu, ako aj rodičovstva.
Teraz vytvorte nový skript s názvom Instantiator.cs a skopírujte doň nasledujúci kód.
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); } } }
Vo vyššie uvedenom programe sme použili metódu GetKeyDown triedy Input na kontrolu, či hráč počas poslednej snímky stlačil konkrétne tlačidlo. Metóda GetKeyDown() vráti hodnotu true, ak sa v tomto rámci stlačí kláves špecifikovaný výčtom KeyCode (ktorý sa používa na zoznam všetkých možných klávesov na štandardnej klávesnici).
Uložte skript. A teraz vytvorte prázdny GameObject kliknutím pravým tlačidlom myši na scénu na karte Hierarchy.
Pripojte tento súbor skriptu (Instantiator.cs) k novovytvorenému komponentu GameObject na karte Inšpektor.
Teraz v premennej Diamond ťahajte tento prefabrikát, ktorý sme vytvorili.
Keď teraz spustíte hru, stlačením medzerníka sa vytvorí nový diamantový objekt identický s tým, ktorý sme použili na vytvorenie prefabrikátu. Môžete vidieť, že každý diamant je vytvorený v hierarchii objektov. Dôvod, prečo ich v hre nevidíte, je ten, že zatiaľ všetky vznikajú presne jedna cez druhú. Môžete si to však overiť na karte Hierarchia. Zakaždým, keď stlačíte medzerník, zobrazí sa na karte ako diamant (klon).