logo

Comprensione dei prefabbricati e dell'istanziazione

Istanziare e distruggere personaggi o oggetti è molto comune in qualsiasi gioco. Istanziare significa portare all'esistenza l'oggetto. Gli oggetti appaiono, si generano o si generano in un gioco, i nemici muoiono, gli elementi della GUI svaniscono e le scene vengono caricate continuamente nel gioco.

I prefabbricati sono molto utili quando si desidera creare un'istanza di GameObject complicati o una raccolta di GameObject in fase di esecuzione. Rispetto alla creazione di GameObjects da zero utilizzando il codice, istanziare i prefabbricati utilizzando il codice è migliore e presenta molti vantaggi.

Capiamo cosa sono i prefabbricati; poiché i prefabbricati sono considerati importanti per capire come funziona l'istanziazione in Unity.

Prefabbricati sono come i progetti di un GameObject. Quindi possiamo dire che i prefabbricati sono una copia di un GameObject che può essere duplicato e inserito in una scena, anche se non esisteva quando è stata realizzata la scena; in altre parole, i prefabbricati possono essere utilizzati per generare GameObject in modo dinamico.

Creiamo un prefabbricato; per questo, devi trascinare il GameObject desiderato dalla gerarchia della scena nelle risorse del progetto.

Comprensione dei prefabbricati e dell'istanziazione

Ora, per istanziare un GameObject, chiamiamo il metodo Instantiate() nel nostro script. Questo metodo è disponibile in MonoBehaviour, accetta un GameObject come parametro, quindi sa quale GameObject creare o duplicare. Dispone inoltre di diverse sostituzioni per modificare la trasformazione dell'oggetto appena istanziato, nonché la genitorialità.

Ora crea un nuovo script chiamato Instantiator.cs e copia al suo interno il seguente codice.

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

Nel programma sopra, abbiamo utilizzato il metodo GetKeyDown della classe Input per verificare se il giocatore ha premuto un pulsante specifico durante l'ultimo fotogramma. Il metodo GetKeyDown() restituisce true se il tasto specificato dall'enum KeyCode (utilizzato per elencare tutti i possibili tasti su una tastiera standard) viene premuto in quel frame.

Salva la sceneggiatura. E ora crea un GameObject vuoto facendo clic con il pulsante destro del mouse sulla scena dalla scheda Gerarchia.

Java se altro
Comprensione dei prefabbricati e dell'istanziazione

Allega il file di script (Instantiator.cs) al componente GameObject appena creato dalla scheda Ispettore.

Ora, nella variabile Diamante trascina il prefabbricato che abbiamo creato.

Comprensione dei prefabbricati e dell'istanziazione

Quando esegui il gioco adesso, premendo la barra spaziatrice creerai un nuovo oggetto Diamante identico a quello che abbiamo usato per creare il prefabbricato. Puoi vedere che ogni diamante viene creato nella gerarchia degli oggetti. Il motivo per cui non puoi vederli nel gioco è che per il momento vengono creati tutti esattamente uno sopra l'altro. Ma puoi verificarlo dalla scheda Gerarchia. Ogni volta che premi una barra spaziatrice, questa verrà visualizzata nella scheda come un diamante (clone).

Comprensione dei prefabbricati e dell'istanziazione