logo

Forstå prefabrikker og instansiering

Å instansiere og ødelegge karakterer eller objekter er veldig vanlig i alle spill. Instantiering betyr å bringe objektet til eksistens. Objekter dukker opp eller skaper eller genererer i et spill, fiender dør, GUI-elementer forsvinner, og scener lastes inn hele tiden i spillet.

Prefabs er veldig nyttige når du vil instansiere kompliserte GameObjects eller samling av GameObjects under kjøring. Sammenlignet med å lage GameObjects fra bunnen av ved hjelp av kode, er det bedre å instansiere prefabrikker ved hjelp av kode, og det har mange fordeler.

La oss forstå hva prefabrikker er; siden prefabrikker anses som viktige for å forstå hvordan instansiering fungerer i Unity.

Prefabrikkerte er som tegninger av et GameObject. Så vi kan si at Prefabs er en kopi av et GameObject som kan dupliseres og settes inn i en scene, selv om det ikke eksisterte da scenen ble laget; med andre ord, prefabs kan brukes til å generere GameObjects dynamisk.

La oss lage en prefab; for dette må du dra ønsket GameObject fra scenehierarkiet inn i prosjektet Assets.

Forstå prefabrikker og instansiering

Nå, for å instansiere et GameObject, kaller vi Instantiate()-metoden i skriptet vårt. Denne metoden er tilgjengelig i MonoBehaviour, tar inn et GameObject som en parameter, slik at den vet hvilket GameObject som skal opprettes eller dupliseres. Den har også forskjellige overstyringer for å endre det nylig instansierte objektets transformasjon, samt foreldreskap.

Lag nå et nytt skript kalt Instantiator.cs og kopier følgende kode i det.

xd betydning
 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 ovenfor brukte vi GetKeyDown-metoden i Input-klassen for å sjekke om spilleren trykket på en spesifikk knapp i løpet av siste frame. GetKeyDown()-metoden returnerer true hvis nøkkelen spesifisert av KeyCode-enumet (som brukes til å liste opp alle mulige taster på et standardtastatur) trykkes i den rammen.

Lagre skriptet. Og nå, lag et tomt GameObject ved å høyreklikke på scenen fra Hierarki-fanen.

Forstå prefabrikker og instansiering

Legg ved den skriptfilen (Instantiator.cs) til den nyopprettede GameObject-komponenten fra Inspektør-fanen.

Nå, i Diamond-variabelen dra den prefabrikken vi har laget.

Forstå prefabrikker og instansiering

Når du kjører spillet nå, vil et trykk på mellomromstasten lage et nytt diamantobjekt som er identisk med det vi brukte til å lage prefabrikken. Du kan se hver diamant er opprettet i objekthierarkiet. Grunnen til at du ikke kan se dem dukke opp i spillet er at foreløpig blir de alle skapt nøyaktig den ene over den andre. Men du kan bekrefte det fra Hierarki-fanen. Hver gang du trykker på mellomromstasten, vil den vises i fanen som en diamant (klone).

Forstå prefabrikker og instansiering