Prefab e Instantiate
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 48 di 67.
Un prefab è un GameObject salvato come modello: trascina un oggetto dalla Hierarchy nella finestra Project e Unity lo memorizza con tutti i suoi componenti e i valori dell’Inspector. Il prefab in sé non si trova nella scena. Uno script ne ottiene uno tramite un campo, come qualsiasi altro riferimento: dichiara public GameObject parcelPrefab; e trascina il prefab su quel campo nell’Inspector.
Instantiate(prefab, position, rotation) crea una copia del prefab nella scena e la restituisce. Questo drone di consegna rilascia un pacco nella propria posizione ogni volta che premi Spazio. Quaternion.identity significa nessuna rotazione:
public GameObject parcelPrefab;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Instantiate(parcelPrefab, transform.position, Quaternion.identity);
}
}Ogni pressione aggiunge un altro oggetto alla Hierarchy, chiamato Parcel(Clone). Il prefab rimane com’era, quindi ogni copia parte dagli stessi valori. GetKeyDown è importante qui: con GetKey, tenendo premuto Spazio per mezzo secondo, rilasceresti circa 30 pacchi, uno per frame.
Sfida
MedioLe frecce muovono già il giocatore. Fai in modo che ogni clic generi una moneta sopra di lui:
- Aggiungi un campo pubblico
GameObjectchiamatocoinPrefab. La scena lo riempie con il prefab Coin non appena il campo esiste. - Quando fai clic con il pulsante sinistro del mouse, genera una copia della moneta 2 unità sopra il giocatore, senza rotazione.
Premi Play, muoviti e fai clic alcune volte, poi Check.
Provalo tu
using UnityEngine;
public class CoinDropper : MonoBehaviour
{
public float speed = 4f;
// coinPrefab: un campo público GameObject al que se asigna el prefab Coin
void Update()
{
if (Input.GetKey(KeyCode.RightArrow))
{
transform.position += new Vector3(speed * Time.deltaTime, 0, 0);
}
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.position -= new Vector3(speed * Time.deltaTime, 0, 0);
}
// Click: crea una moneda 2 unidades por encima del jugador
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti di scripting in Unity
1Il tuo primo script
Ciao, UnityPosiziona il cuboMuovi a ogni frameRuota ogni secondoGuida con i tastiRiepilogo: guida il cubo4Vettori
Sommare vettoriDirezioniSpazio locale e spazio globaleVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni7Progetto: Acchiappa la stella
L'acchiappatoreUna stella cadente10Il ciclo di vita degli script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL’ordine del ciclo di vitaRipasso: logger del ciclo di vita2L'Inspector
Campi dell'InspectorSerializeFieldNumeri decimali e MathfAttributi dell'InspectorRiepilogo: Ascensore5Trasformazioni e gerarchia
Genitori e figliScalaGuarda gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita6Oggetti di gioco e componenti
Riferimenti nell’InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRipasso: interruttore della luce9Prefab e generazione di oggetti
Prefab e InstantiateGenerare oggetti con un timerGenerare oggetti in una grigliaElenchi di oggettiDistruggere oggettiGenerazioni casualiRiepilogo: fuochi d'artificio