logo

Az előregyártott elemek és a példányosítás megértése

A karakterek vagy tárgyak példányosítása és megsemmisítése nagyon gyakori minden játékban. A példányosítás a tárgy létezését jelenti. Objektumok jelennek meg vagy jönnek létre vagy generálódnak a játékban, ellenségek meghalnak, a grafikus felület elemei eltűnnek, és a jelenetek folyamatosan betöltődnek a játékban.

Az előregyártott elemek nagyon hasznosak, ha bonyolult GameObjecteket vagy GameObjects gyűjteményt szeretne példányosítani futás közben. Összehasonlítva a GameObjects nulláról kóddal történő létrehozásával, az előregyártott elemek kóddal történő példányosítása jobb, és számos előnnyel jár.

Értsük meg, mik az előregyártott elemek; mivel az előregyártott elemeket fontosnak tartják a példányosítás működésének megértéséhez a Unityben.

Előregyártott elemek olyanok, mint egy GameObject tervrajzai. Tehát azt mondhatjuk, hogy a Prefabs egy GameObject másolata, amely sokszorosítható és jelenetbe helyezhető, még akkor is, ha nem létezett a jelenet készítésekor; más szóval, előregyártott elemek használhatók GameObjects dinamikus generálására.

Hozzunk létre egy előregyártott elemet; ehhez át kell húznia a kívánt GameObject-et a jelenethierarchiából a projekt Assetsbe.

ábécé számok
Az előregyártott elemek és a példányosítás megértése

Most egy GameObject példányosításához hívjuk meg az Instantiate() metódust a szkriptünkben. Ez a módszer elérhető a MonoBehaviourban, paraméterként egy GameObject-et vesz fel, így tudja, melyik GameObject-et kell létrehozni vagy megkettőzni. Különböző felülírásai is vannak az újonnan példányosított objektum transzformációjának, valamint a szülői beállításnak a megváltoztatásához.

Most hozzon létre egy új szkriptet Instantiator.cs néven, és másolja bele a következő kódot.

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

A fenti programban az Input osztály GetKeyDown metódusát használtuk, hogy ellenőrizzük, hogy a játékos megnyomott-e egy adott gombot az utolsó képkocka alatt. A GetKeyDown() metódus igaz értéket ad vissza, ha a KeyCode enum által megadott billentyűt (amely a szabványos billentyűzet összes lehetséges billentyűjének listázására használjuk) lenyomják az adott keretben.

Mentse el a szkriptet. Most pedig hozzon létre egy üres GameObjectet úgy, hogy jobb gombbal kattintson a jelenetre a Hierarchia lapon.

bináris fa csomagküldő bejárás
Az előregyártott elemek és a példányosítás megértése

Csatolja a szkriptfájlt (Instantiator.cs) az újonnan létrehozott GameObject komponenshez az Inspector lapon.

Most a Diamond változóban húzza az általunk létrehozott előregyártott elemet.

Az előregyártott elemek és a példányosítás megértése

Amikor most futtatja a játékot, a szóköz billentyű lenyomásával egy új gyémánt objektumot hoz létre, amely megegyezik azzal, amelyet az előregyártott elem létrehozásához használtunk. Láthatja, hogy minden gyémánt létrejött az objektumhierarchiában. Azért nem láthatod őket a játékban, mert egyelőre mindegyik pontosan egymás fölé kerül. De ellenőrizheti a Hierarchia lapon. Minden alkalommal, amikor megnyomja a szóköz billentyűt, az a lapon gyémántként (klónként) jelenik meg.

Az előregyártott elemek és a példányosítás megértése