logo

Förstå Prefabs och instansiering

Att instansiera och förstöra karaktärer eller föremål är mycket vanligt i alla spel. Att instansiera innebär att få objektet till existens. Objekt dyker upp eller skapar eller genererar i ett spel, fiender dör, GUI-element försvinner och scener laddas hela tiden i spelet.

Prefabs är mycket användbara när du vill instansiera komplicerade GameObjects eller samling av GameObjects under körning. Jämfört med att skapa GameObjects från grunden med hjälp av kod, är det bättre att instansiera prefabs med hjälp av kod, och det har många fördelar.

Låt oss förstå vad prefabs är; eftersom prefabs anses viktiga för att förstå hur instansiering fungerar i Unity.

755 chmod

Prefabs är som ritningar av ett GameObject. Så vi kan säga, Prefabs är en kopia av ett GameObject som kan dupliceras och läggas in i en scen, även om det inte fanns när scenen skapades; med andra ord kan prefabs användas för att generera GameObjects dynamiskt.

Låt oss skapa en prefab; för detta måste du dra önskat GameObject från din scenhierarki till projektet Assets.

java dubbel till sträng
Förstå Prefabs och instansiering

Nu, för att instansiera ett GameObject, anropar vi metoden Instantiate() i vårt skript. Denna metod är tillgänglig i MonoBehaviour, tar in ett GameObject som en parameter, så det vet vilket GameObject som ska skapas eller dupliceras. Den har också olika åsidosättanden för att ändra det nyligen instansierade objektets transformation, såväl som föräldraskap.

Skapa nu ett nytt skript som heter Instantiator.cs och kopiera följande kod i det.

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

I programmet ovan använde vi GetKeyDown-metoden för Input-klassen för att kontrollera om spelaren tryckte på en specifik knapp under den sista bilden. Metoden GetKeyDown() returnerar true om nyckeln som anges av KeyCode enum (som används för att lista alla möjliga tangenter på ett standardtangentbord) trycks in i den ramen.

Spara skriptet. Och nu, skapa ett tomt GameObject genom att högerklicka på scenen från Hierarki-fliken.

index över listan
Förstå Prefabs och instansiering

Bifoga skriptfilen (Instantiator.cs) till den nyskapade GameObjects komponent från fliken Inspektör.

Dra nu den prefab som vi har skapat i Diamond-variabeln.

Förstå Prefabs och instansiering

När du kör spelet nu, genom att trycka på mellanslagstangenten skapas ett nytt diamantobjekt som är identiskt med det vi använde för att skapa prefab. Du kan se att varje diamant skapas i objekthierarkin. Anledningen till att du inte kan se dem dyka upp i spelet är att de för närvarande skapas exakt den ena framför den andra. Men du kan verifiera det från fliken Hierarki. Varje gång du trycker på en blankstegstangent visas den i fliken som en diamant (klon).

Förstå Prefabs och instansiering