Cerchiamo di comprendere meglio cosa ci si presenta sullo schermo al primo avvio di Unity.
Tenete presente che se non avete conoscenza dell’interfaccia di Unity, questa sarà una lezione importantissima che potrebbe determinare il vostro futuro di sviluppatori su Unity.
Dovrete leggere con attenzione questo articolo ed imparare le terminologie qui usate.
Ogni elemento descritto sta alla base del funzionamento e della comprensione di Unity 3D.
Impareremo il significato delle terminologie basilari quali:
- Hierarchy
- Scene
- Inspector
- GameObject
- Component
- Transform
Eseguendo Unity per la prima volta vi troverete davanti ad uno strumento diviso in tante finestre pieno di pulsanti che invocano il vostro click ma che all’inizio potrebbero disorientare.
Ma non demordete, siete di fronte al più completo strumento per la creazione di videogiochi che sia mai stato concepito e presto ne avrete un pieno controllo!
Il potere della creazione tra i polpastrelli.
Esaminiamo la parte superiore della schermata.
Ci sono quattro aree principali, tutte molto importanti:
Hierarchy, Scene, Game e Inspector.
Hierarchy
Si tratta della gerarchia degli oggetti nella scena corrente.
All’interno di questa finestra appariranno tutti gli oggetti su cui lavorerai. Gli oggetti nella scena vengono chiamati gameObjects (oggetti del gioco) e saranno tutti e sempre elencati in questa finestra.
Scene
E’ la finestra di lavoro in cui appare la scena attuale, è in questa finestra che lavorerai e costruirai la scena del gioco, spostando, scalando e posizionando gli oggetti a tuo piacimento.
Game
E’ la finestra dove vedrai il gioco come appare realmente quando sarà eseguito. Si tratta di una schermata di solo output, (dunque non puoi interagire direttamente con essa), ma al suo interno potrai vedere il risultato del lavoro che hai svolto fino a quel momento.
Inspector
E’ l’ispettore, ovvero la finestra d’ispezione dell’oggetto selezionato. Su questa finestra potrai vedere tutte le informazioni a riguardo il gamaObject selezionato il quel momento, gli script ad esso collegato e tutte le caratteristiche che possiede. Se al momento è completamente vuoto, è semplicemente perché non hai selezionato alcun gameObjects .
All’inizio saranno già presenti due gameObjects fondamentali nella scena, una telecamera e una luce.
Come si può facilmente intuire, la telecamera rappresenta il punto di vista, si tratta dell’occhio che inquadra il gioco. Ciò che viene inquadrato dalla telecamera è ciò che viene visualizzato nella finestra Game.
Cosa si intende con la parola “Scena“?
Una scena (scene) è un livello di gioco. Il mondo di gioco può essere composto da infinite scene che verranno caricate all’occorrenza. Oppure, in alcuni casi è sufficiente avere due o tre scene per un intero gioco, questo dipende dalla complessità del gioco in questione.
NOTA : E’ importante comprendere sin da subito che nel momento in cui si passa da una scena all’altra, tutti i gameObjects nella Hierarchy verranno distrutti e verranno caricati i gameObjects della nuova scena.
Dunque i gameObjects non sono automaticamente permanenti per l’intera esecuzione del gioco a meno che non venga specificato di non distruggere un determinato oggetto al caricamento di una nuova scena.
L’elemento più importante nello sviluppo di un gioco:
i gameObjects.
Tutti gli elementi presenti in una scena sono gameObjects.
La telecamera è un gameObject, la luce è un gameObject, un personaggio è un gameObject ecc… I gameObjects differenziano tra loro a seconda dei componenti che gli si assegnano.
Quando si seleziona un gameObject, potremmo vedere tutti i componenti presenti su quello spacifico gameObject nella finestra inspector .
Di natura i gameObjects sono “vuoti”, ovvero sono solo “punti nello spazio 3D della scena” che non svolgono nessuna operazione particolare. Ciò che rende i gameObject funzionali sono i components li compongono (dicasi anche “attaccati su di esso”).
I componets (componenti) su un gameObject
I components (componenti) sono un altro elemento fondamentale su cui si basa tutto lo sviluppo di un videogioco in Unity. Essi sono gli elementi che “riempiono” un gameObject e ne assegnano le caratteristiche.
Per esempio, la telecamera svolge il suo lavoro di telecamera perché è un gameObject a cui è stato assegnato il componente “Camera” che lo rende appunto, una telecamera. Senza il componente Camera, quel gameObject non avrebbe le stesse funzioni e la stesso ruolo nel gioco. Una telecamera è tale proprio perché è un normale gameObject con il componente Camera.
Per fare un altro esempio, per avere una sfera 3D all’interno della scena dovremmo creare un gameObject con il componente del “modello sfera” su di esso.
DIVAGAZIONE SUL CODICE DEI COMPONENTI. A rischio di andare “fuori tema” con la lezione, voglio comunque farvi famigliarizzare con una delle istruzioni fondamentali che incontreremo nel codice. GetComponent<tipoDiComponente>(); Con questa semplice riga nel codice andremo a “prendere” un qualsiasi componente, così da poterlo gestire. GetComponent<Camera>(); Avremo “letto” il componente della telecamera così da poterlo gestire come vogliamo direttamente da codice, cambiando lo zoom della telecamera e moltissime altre caratteristiche direttamente a run-time, cioè durante l’esecuzione del gioco. |
Anche un qualsiasi script è un componente. Per esempio uno script che fa muovere un personaggio è un componente, un determinato effetto grafico assegnato al gameObject della telecamera è un componente, ecc..
Tutti i gameObject sono formati da più componenti.
Per esempio, un personaggio che si muove sullo schermo, sarà un gameObject con il componente “modello personaggio” che lo faccia visualizzare sullo schermo e lo script “movimento” per farlo muovere tramite l’input del giocatore.
Il componente Transform
Come suggerisce il nome, esso rappresenta tutte le “trasformazioni 3D” dell’oggetto intese come peculiarità del gameObject nello spazio, ovvero la sua scala, la sua rotazione e la sua posizione nello spazio. Si può definire come il componente che identifica questo gameObject sulla vostra scena.
Un’altra parte importante dell’interfaccia di Unity: il pannello Project
Nella parte inferiore della schermata di Unity troviamo una finestra che può passare tra Project e Console attraverso due linguette. Vedremo in seguito cosa sia la Console e la sua utilità. Per ora concentriamoci ora sul pannello Project.
All’interno della finestra Project troveremo i files del progetto o più comunemente detti “Assets”.
Un asset è un “bene”, inteso come “elemento utile” allo sviluppatore.
Textures, suoni, modelli, scripts, materiali e quant’altro userete in un progetto verrà chiamato Asset.
Esattamente come dei files in una finestra di Windows all’interno di questa finestra potremmo vedere ogni tipo di file che fa parte del progetto che potrete ordinare in cartelle e sottocartelle.
E’ importante che teniate i vostri files ben ordinati per categorie creando delle cartelle che contengano un certo tipo di files, così da orientarvi facilmente quando vorrete trovare un determinato file.
Alla sinistra del nostro pannello Project troviamo un piccolo menù di navigazione dal quale possiamo
accedere facilmente alle directory dei nostri files o a dei preferiti
(Favorites), cartelle che filtrano tutti i file di una specifica
categoria. Ad esempio, cliccando su “All Models” ci verranno mostrati
tutti i modelli che attualmente si trovano nel nostro progetto.
Appena iniziato un progetto vi troverete con la cartella Asset che sarà sempre presente e rappresenterà la cartella superiore a tutte in cui si troveranno tutti gli asset.
Sarebbe buona abitudine creare sin da subito una gerarchia che inizialmente contenga almeno le cartelle:
- Textures
- Scripts
- Materials
- Textures
- Models
Così da sapere sin da subito dove creare o importare i files.
Imparerete presto che avere tanti files in un progetto non vuol dire che essi faranno tutti parte del gioco finito. Infatti, quando costruiremo la build del gioco verranno inseriti nelle cartelle del gioco solo i files effettivamente usati e non tutti quelli importati nel progetto.
Questo concetto lo assimilerete bene quando noterete che avrete un progetto di decine di Gb ma una build finale di poche centinaia di Mb (per fortuna!). Potrà capitare in fatti di usare dei “package” scaricati dall’Asset Store ma far uso solo di piccole parti di essi. Solo le parti effettivamente usate (modelli, textures, scripts ecc..) saranno inserite nella build.
Muoversi all’interno della finestra scene
In alto a sinistra è presente una piccola barra di navigazione con cinque pulsanti. Essi servono per muoversi ed interagire con gli oggetti all’interno della scena (nella finestra scene).
I pulsanti permettono di, in ordine da sinistra a destra:
- Effettuare il panning della visuale
- Muovere l’oggetto selezionato
- Ruotare l’oggetto selezionato
- Scalare l’oggetto selezionato
- Deformare la scala dell’oggetto selezionato
- Rotella mouse: serve per zoomare la visuale della scena.
- Tasto sinistro del mouse: permette di selezionare gli oggetti nella scena.
- Alt + tasto sinistro: permette di ruotare la visuale attorno ad un punto.
- Tasto destro: se tenuto premuto abilita la “fly mode”. In questa modalità, potrai muoverti all’interno della scena tramite l’utilizzo dei pulsanti W, A, S e D, e potrai ruotare la vista semplicemente muovendo il mouse.
- Tasto centrale del mouse: Permette di effettuare il camera panning ovvero muovere la visuale senza ruotarla. Puoi effettuare la stessa operazione tenendo premuto Ctrl + Alt ed usare il tasto sinistro del mouse.
- Tasto F: permette di spostare la visuale su un singolo oggetto. Ti sarà molto utile quando vorrai spostarti rapidamente su un oggetto della scena molto distante o che si trova fuori dalla tua visuale. Puoi effettuare la stessa operazione con un Doppio Click del mouse su un oggetto della Hierarchy.
Uno sguardo al pannello Console
Premendo sulla linguetta “Console“, passeremo dal pannello Project a quello… Console!
Come tutti i pannelli, possiamo spostarlo e posizionarlo dove più ci aggrada.
Su questo pannello verranno mostrati tutti gli errori riguardanti il tuo progetto (speriamo che siano sempre pochi 😆 ).
Sarà oltremodo utile quando proverai a risolvere un bug o per testare il corretto funzionamento di uno script.
Per esempio ti basterà scrivere il codice
Debug.Log(“mio testo”);
oppure
print(“mio testo”);
per vedere magicamente apparire la scritta “mio testo” sulla console!
Ovviamente non ce ne importa nulla di vedere un testo che abbiamo scritto noi sulla console, vedremo l’utilità di questo pannello nelle lezioni a seguire.
Tenete presente sin da ora che questo pannello rappresenta un interfaccia di uscita come la finestra Game, ovvero, non sarà possibile digitare testi direttamente al suo interno, ma sarà molto utile come output di ciò che ci interesserà sapere durante l’esecuzione del nostro gioco.