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

GameObject e componenti

Gestire gli oggetti del gioco (personaggi, parti dello scenario, luci e telecamere) grazie a componenti da aggiungere e configurare con il pannello Inpector
Gestire gli oggetti del gioco (personaggi, parti dello scenario, luci e telecamere) grazie a componenti da aggiungere e configurare con il pannello Inpector
Link copiato negli appunti

In questa lezione vedremo in dettaglio il pannello Inspector, che è il cuore di Unity ed uno dei pannelli che vi troverete ad usare più spesso.

Per parlare dell'Inspector, è necessario parlare dei componenti (o Components) e dei GameObjects, che sono la chiave della flessibilità di Unity.

I GameObject

Quasi tutto ciò che viene visualizzato a schermo in Unity è un GameObject. Ogni entità di un gioco (il protagonista, un nemico, una piattaforma su cui saltare, la videocamera che inquadra la scena stessa, o anche il testo che mostra il punteggio) è un GameObject, ed ha un nome, alcune proprietà di base, e può essere posizionato nello spazio 3D.

I GameObjects possono essere di tipo molto diverso: possono essere visibili o invisibili, emettere suoni, o essere interattivi. Tutte queste proprietà vengono definite dai componenti, che sono delle parti che possono essere aggiunte o rimosse dai GameObject a piacimento.

Creiamo un nuovo GameObject dal menu GameObject > Create Empty. Un elemento viene posto nella scena, e selezionato. Il pannello Inspector ci mostra le sue proprietà:

Figura 23. Proprietà del GameObject
Proprietà del GameObject

Vediamo le parti dell'Inspector una per una, cominciando dalla fascetta delle proprietà di base.

In alto, c'è un campo di testo con il nome del GameObject, che può essere cambiato a piacimento. A destra, una casella di spunta di nome Static indica se l'oggetto è immobile ai fini di alcune ottimizzazioni (ne parleremo più avanti).

Attivare e disattivare gli oggetti

A sinistra del nome, una checkbox indica se l'oggetto è attivo o no. Gli oggetti disattivati sono invisibili nella Scene View, non vengono mostrati in gioco (Game View), ed i loro componenti non sono attivi (ovvero i sistemi particellari non emettono particelle, i suoni non vanno in play, ecc.). Inoltre, gli eventuali script creati da noi non vengono eseguiti, e (molto importante) gli altri script non sono capaci di 'trovarli' nella scena, a meno che non avessero già un riferimento all'oggetto disattivo prima che questo venisse disattivato (vedremo come trovare oggetti nella scena nelle lezioni dedicate allo scripting).

Sotto, si possono assegnare tag e definire il Layer in cui si trova l'oggetto. A sinistra si può scegliere un'icona speciale con cui visualizzare l'oggetto nella Scene View.

I Componenti ed i loro parametri

Sotto questa fascia, iniziano i componenti. Il primo è il Transform, che non può essere rimosso, ed infatti anche un oggetto vuoto nasce con questo componente.

Ogni componente ha una serie di parametri, il Transform ne possiede tre: posizione, rotazione e scalatura. Essendo dei valori Vector3 (cos'è un Vector3 lo vedremo), sono indicati da tre valori (uno per ogni asse) per un totale di 9.

Questi valori possono essere cambiati cliccando nel campo corrispondente, oppure cliccando e trascinando sul nome a fianco al campo stesso.

Spostando, ruotando o scalando l'oggetto nella Scene View (come abbiamo visto in una lezione precedente), si vedranno cambiare i valori nel componente Transform in tempo reale.

Tutti i componenti possono essere espansi o chiusi mediante il triangolino vicino al nome (utile se un GameObject ne ha tanti). Inoltre facendo click sull'icona del libro si apre la guida locale di Unity (quindi disponibile anche offline) riguardo quello specifico componente.

L'icona dell'ingranaggio permette di resettare i valori di un componente, di rimuoverlo, di spostarlo su e giù nella lista (solo per comodità, non ha nessun risvolto sul gioco stesso), e di copiarlo (Copy Component) e successivamente incollarlo su un altro GameObject (Paste Component As New), oppure di copiarne i valori ed incollarli in un altro componente dello stesso tipo (Paste Component Values).

Aggiungere e rimuovere Componenti

Vediamo un esempio di un oggetto più complesso. Selezioniamo la videocamera presente nella scena cliccando sul suo nome (Main Camera) nel pannello Hierarchy. Se non fosse presente, possiamo crearne una nuova da GameObject > Create Other > Camera. Una volta selezionata o creata, l'Inspector mostrerà i parametri dell'oggetto:

Figura 24. Parametri del GameObject
Parametri del GameObject

Un oggetto videocamera di default ha un Transform, una Camera, un GUILayer, un Flare Layer ed un Audio Listener. Come detto, sono i componenti che fanno un oggetto. Un oggetto videocamera non è altro che un GameObject con un componente Camera, e rimuovendolo di fatto smette di essere una camera, così come è possibile creare una camera a partire da un oggetto vuoto e aggiungendo il componente Camera.

Per aggiungere componenti ci sono diversi metodi. Il più semplice è cliccare il bottone Add Component che si trova alla fine dell'Inspector dopo tutti i componenti già esistenti:

Figura 25. Ricerca tra i componenti
Ricerca tra i componenti

Si aprirà un pannellino con una ricerca, in cui è possibile digitare il nome del componente da aggiungere. Nel caso di script, è anche possibile crearne di nuovi (New Script).

Un altro metodo di aggiunta è il menu Components, in cui c'è l'opzione Add… che rimanda al pannellino di prima, oppure una scelta ad albero (ad esempio Component > Effects > Particle System).

Come dicevamo all'inizio, i componenti possono essere aggiunti e rimossi a piacimento, creando infinite combinazioni di GameObject diversi. Inoltre, si possono estendere i componenti predefiniti di Unity attraverso l'uso dello scripting, infatti tutti gli script in Unity (che sia JavaScript, Boo o C#, i tre linguaggi supportati) sono di fatto dei componenti.

Possiamo quindi creare più oggetti di tipo simile utilizzando dei GameObject con gli stessi componenti, ma poi assegnare alle proprietà di questi dei valori diversi.

Un caso tipico potrebbe essere la gestione dei nemici in un gioco, che potrebbero avere gli stessi componenti: Mesh Renderer e Mesh Filter per renderli oggetti visibili, ed in più uno script creato da noi con alcune proprietà (l'energia, il danno che procurano al protagonista, la velocità, ecc.). Semplicemente variando i valori delle proprietà di questi componenti, si possono creare nemici diversi sia nell'aspetto che nella funzionalità.

Nello specifico, selezionando una mesh 3D nel componente Mesh Filter se ne modifica l'apparenza, mentre cambiando i valori di energia, danni e velocità nello script custom si possono creare nemici più o meno difficili da sconfiggere.

Ti consigliamo anche