Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Gerarchie parent-children in Unity

Il pannello Hierarchy: i vantaggi di inserire oggetti all'interno di altri creando un rapporto parent-children, per creare e manipolare oggetti complessi.
Il pannello Hierarchy: i vantaggi di inserire oggetti all'interno di altri creando un rapporto parent-children, per creare e manipolare oggetti complessi.
Link copiato negli appunti

In questa lezione, vedremo come utilizzare il pannello Hierarchy, e i vantaggi di inserire oggetti all'interno di altri creando un rapporto parent-children.

Il pannello Hierarchy

Situato inizialmente alla sinistra della vista Scene, il pannello Hierarchy è fondamentale per la gestione della scena: in esso possiamo vedere tutti i nomi degli oggetti in scena organizzati in una lista, selezionarli, ed altre operazioni.

Inizialmente in una scena vuota, il pannello contiene solo la Main Camera che difatti è l'unico oggetto in scena. Andando su GameObject > Create Other > Cube, vedremo comparire il nome del secondo oggetto appena creato.

Con un click si possono selezionare gli oggetti (vengono evidenziati in blu), anche utilizzando le classiche tecniche di selezione multipla dei file (trascinamento, Ctrl o Cmd + Click per aggiungere e rimuovere dalla selezione, o Shift + click per selezionarne una serie, e così via).

Un doppio click sull'oggetto ha l'effetto di spostare il punto di vista sull'oggetto (nella Scene View), che è esattamente come premere F mentre l'oggetto è selezionato.

Nota: quando si usa una shortcut in Unity, è importante dove si trova il cursore del mouse. Ad esempio, premere F produrrà un effetto solo se il cursore è nella vista Scene, altrimenti non avverrà nessuno zoom.

Una volta selezionato un oggetto, con Cmd + Backspace (su Mac) o Canc (su PC) lo si può cancellare (o ancora, mediante la voce di menu Edit > Delete), mentre con Invio o un click (Mac) o F2 (PC), lo si può rinominare.

Parent e children

Abbiamo visto un esempio di Hierarchy molto semplice, ma in generale il numero di oggetti in scena può diventare elevato. Per organizzare la scena in maniera più gestibile, esiste la possibilità di organizzare gli oggetti collegandoli fra loro o, in altre parole, mediante il rapporto 'parent-children'.

Quest'operazione definisce un oggetto padre, che è l'oggetto che contiene gli altri, ed uno o più oggetti figlio (i cosiddetti children), ovvero gli oggetti contenuti nel primo.

Per creare la connessione fra due oggetti, basta che nel pannello Hierarchy venga trascinato l'oggetto che deve diventare Child sopra quello che sarà il Parent. Il cursore diventa una freccia ricurva, ad indicare che l'oggetto verrà imparentato con quello su cui si sta trascinando, che viene evidenziato in azzurro.

Ad esempio, se creiamo due cubi, li rinominiamo, e poi trasciniamo il cubo Child Cube sopra Parent Cube:

Figura 20. Trascinare l'oggetto figlio sul genitore

Il risultato è questo:

Figura 21. Oggetto figlio agganciato al genitore

Ovvero, il ChildCube ora è agganciato al ParentCube. La conseguenza di questo collegamento è che l'oggetto figlio subisce molte delle trasformazioni effettuate sul padre. Alcune di queste proprietà saranno oggetto di lezioni successive, quindi ci limitiamo a menzionarle rapidamente:

  • quando un oggetto parent viene disattivato, anche tutti i figli diventano inattivi;
  • quando viene cancellato o distrutto da codice anche i figli scompaiono (queste valgono sia quando viene fatto nell'interfaccia di Unity, sia via codice).

Il collegamento parent-children può avvenire anche su più livelli, ovvero un oggetto può essere parent di altri ma a sua volta figlio di un terzo, e così via. Per questo motivo, è sempre utile organizzare la propria scena in scatole cinesi, ed un buon trucco è di avere una serie di oggetti vuoti che fanno da parent per tutti gli oggetti di un certo tipo.

Ad esempio, in un tipico gioco action tutti gli oggetti che rimangono fermi (pezzi di scenario, il sole, ecc.) potrebbero essere children di un unico oggetto vuoto chiamato Static Objects, un altro oggetto vuoto Moving Objects potrebbe contenere il giocatore e tutti i nemici, e così via.

Così facendo in qualunque momento si potrebbero disabilitare tutti gli oggetti statici con un solo click, e riabilitarli altrettanto facilmente in un secondo momento.

Trasformazioni parent-children

La conseguenza più importante del rapporto parent-children è che quando il parent viene scalato, mosso o ruotato, i children vengono trasformati insieme a lui. Questo vuol dire che se un oggetto parent viene scalato del 200%, anche i suoi children vengono scalati del 200% rispetto alla scalatura che avevano al momento in cui sono stati collegati a lui.

Ad esempio, creiamo due cubi sulla scena (mediante GameObject > Create Other > Cube), e spostiamo uno dei due di poco in modo che non siano sovrapposti. Chiamiamo quello al centro della scena ParentCube, e quello spostato ChildCube.

Scaliamo il cubo figlio tramite lo strumento scalatura, fino a farlo diventare circa il doppio della sua dimensione. Ora, lo facciamo diventare child trascinando il suo nome su quello di ParentCube nel pannello Hierarchy.

Ora scaliamo il ParentCube come abbiamo fatto per il primo cubo, a circa due volte la sua dimensione. Noterete che il ChildCube lo segue, diventando ancora più grande:

Figura 22. L'oggetto figlio segue le trasformazioni del padre

Inoltre, se selezionate i due cubi uno alla volta, potrete vedere che nel pannellino Inspector (che vedremo più avanti in dettaglio) il valore di Scale nella scheda Transform è più o meno 2 sia per il ChildCube sia per il ParentCube.

Però, visto il rapporto parent-child, anche se hanno lo stesso valore di scalatura il ChildCube risulta sensibilmente più grande perché la sua scalatura è il 200% (sua) del 200% (il parent), quindi è in pratica scalato del 400%.

Ti consigliamo anche