Interrompiamo temporaneamente, con questa lezione, la creazione del nostro gioco, per descrivere una funzionalità particolarmente importante di Unity 3D: i Prefabs.
Un Prefabs è un tipo di GameObject ruiutilizzabile memorizzato nel Progetto.I prefabs possono essere inseriti in un qualsiasi numero di scene e più volte nella stessa scena.
Un Prefab è un modello di oggetto. Quando si aggiunge un prefab ad una scena, si crea un'istanza di esso. Tutte le istanze sono collegate all'originale e sono essenzialmente cloni di essa. Non importa quante istanze esistono nel progetto, quando si apporta una modifica ad un Prefab il cambiamento viene applicato automaticamente ed in cascata a tutte le istanze.
Creazione di un Prefab
Per creare un prefabbricato, è sufficiente trascinare un GameObject, precedentemente creato, dalla scena alla finestra di progetto. Il nome del GameObject diventerà blu per indicare che si tratta di un prefabbricato. Dopo averlo creato è possibile rinominare il nuovo prefab.Dopo aver eseguito questi passaggi, il GameObject e tutti i suoi figli sono divenuti un prefab e il prefab può essere riutilizzato in più istanze.
Il GameObject originale nella pannello Hierarchy è ormai diventato un'istanza del Prefab.
Istanze dei Prefab
Per creare un'istanza di Prefab nella scena attuale basta trascinare il Prefab dalla finestra di progetto nella scena o nella Hierarchy View. Questa istanza è legata al Prefab, come visualizzato dal testo blu utilizzato per il nome nella visualizzazione Gerarchia.
Una volta selezionata una istanza di prefab, se si vuole fare una modifica che interessa tutte le istanze, è possibile utilizzare il pulsante Select che appare nel pannello Inspector.
Una volta selezionata una istanza di prefab, se si vuole fare una modifica che interessa tutte le istanze, è possibile utilizzare il pulsante Select che appare nel pannello Inspector.
Ereditarietà
Ereditarietà significa che quando il prefab cambua, tali modifiche vengono applicate a tutte le istanze collegate. Ad esempio, se si aggiunge un nuovo script ad un prefab, tutti i GameObjects collegati conterranno lo stesso script.
Tuttavia, è possibile modificare le proprietà di una singola istanza mantenendo il collegamento intatto. Basta cambiare qualsiasi proprietà di un'istanza per notare che il nome della variabile diventa in grassetto.
L'ereditarietà di questa variabile verrà ora ignorata. Tutte le proprietà sovrascritte non saranno influenzate dai cambiamenti della fonte Prefab.
Questo ci consente di modificare le istanze dei prefabs per renderli unici senza interrompere il collegamento con il prefab origine.
Questo ci consente di modificare le istanze dei prefabs per renderli unici senza interrompere il collegamento con il prefab origine.
Se si desidera aggiornare il Prefab e tutte le istanze, includendo anche le variabili sovrascritte, è possibile utilizzare il pulsante Apply della barra Prefab.
Si noti che premendo il pulsante Apply la posizione e la rotazione di tutte le istanze viene modificata. Questo fa si che tutte le istanze vengano posizionate nello stesso punto. Tuttavia la posizione e la rotazione di eventuali figli delle istanze saranno calcolate sempre in relazione alla radice della trasformazione.
Se si desidera eliminare tutte le sostituzioni, è possibile fare clic sul pulsante Revert.
Nessun commento:
Posta un commento