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