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

La Game View

Visualizzare l'anteprima del gioco dal punto di vista del giocatore (la videocamera attiva) e vedere cosa comporta mandare il gioco in 'Play' dentro Unity
Visualizzare l'anteprima del gioco dal punto di vista del giocatore (la videocamera attiva) e vedere cosa comporta mandare il gioco in 'Play' dentro Unity
Link copiato negli appunti

In questa lezione, vedremo come utilizzare la Game View per visualizzare un'anteprima di come verrà visualizzato il gioco ai giocatori, e cosa comporta mandare il gioco 'in Play' dentro Unity.

In una precedente lezione abbiamo parlato della Scene View, che offre una visuale sulla scena 3D nella quale si svolge il gioco. Per visualizzare quello che i giocatori vedono durante il gioco, è disponibile la Game View, che mostra il punto di vista della videocamera attualmente attiva.

Figura 26. Game View semivuota con un semplice cubo
Game View semivuota con un semplice cubo

Esaminiamo le poche opzioni presenti.

Il menu contestuale in alto a sinistra permette di scegliere l'aspect ratio della Game View, per rendersi conto dei limiti di visuale che i giocatori avranno su un certo device piuttosto che un altro. Inizialmente c'è scritto Free Aspect, che indica che la Game View avrà esattamente le dimensioni che gli vogliamo dare.

Le altre opzioni disponibili dipendono dalla piattaforma su cui si sta lavorando: per Mac, PC e Linux, le scelte saranno 5:4, 4:3, 3:2, 16:9, 16:10, e così via. Per iOS, verranno presentate tutte le scelte utili: iPhone verticale, iPhone orizzontale, iPhone5, iPad, ecc.

È importante ricordare che Unity scala tutto in relazione all'altezza. Se un oggetto è in alto, rimarrà in alto indipendentemente dalla dimensione e dall'aspect ratio. Se è in basso, lo stesso.

Non funziona così invece il posizionamento orizzontale: un oggetto che è addossato al limite destro della visuale quando l'aspect ratio è 16:9, sarà fuori campo quando è in 4:3 (perché 4:3 è "più stretto" di 16:9). Per questo motivo, il posizionamento di oggetti ai bordi dello schermo va gestito via programmazione.

Le altre opzioni sulla destra sono:

  • Maximize on Play, che ridimensiona la Game View portandola a pieno schermo quando il gioco viene mandato in play,
  • Stats, che mostra statistiche utili sul gioco (anche quando non è in play!),
  • Gizmos, che se attivato permette di visualizzare i simboli dei componenti come Camera e Particle Systems anche nella Game View oltre che nella Scene View.

La Game View è una riproduzione fedele al 99% di quello che avverrà nel gioco. La differenza che potrebbe verificarsi a livello grafico dipende in generale dalla piattaforma di deploy: sviluppando un gioco per iOS su Mac, chiaramente le performance saranno diverse da quelle sul device stesso. Allo stesso modo, sarà impossibile creare un gioco che usa le DirectX11 su Mac.

Detto questo, la Game View è comunque una rappresentazione molto fedele del risultato finale.

Ecco ad esempio un confronto fra la Scene View e la Game View di un semplice gioco:

Figura 27. Confornto tra Scene View e Game View

Confornto tra Scene View e Game View

Come si può notare, oltre alla differenza di angolo di visuale ed ai gizmo presenti nella Scene View, la resa grafica è identica.

Quello che viene visualizzato nella Game View è il punto di vista della videocamera attiva al momento. Se la scena contiene più di una videocamera, quella attiva sarà l'ultima creata, oppure si potrà scegliere via codice quale attivare in ogni momento (e magari alternarle).

Mandare il gioco in Play

Per provare il gioco, è possibile entrare nel cosiddetto Play Mode mediante il tasto Play in alto al centro.

Figura 28. Il bottone Play
Il bottone Play

Quando viene premuto Play (Cmd + P su Mac e Ctrl + P su Windows), Unity oscura leggermente tutta l'interfaccia, ed inizia ad eseguire il gioco. Questo vuol dire che tutti i componenti che hanno un comportamento nel tempo (come i sistemi particellari o i rigidbody, che fanno cadere gli oggetti con la gravità) verranno attivati ed andranno in play anch'essi. Inoltre, tutti gli script connessi a dei GameObject attivi verranno eseguiti.

In questo momento, vengono anche attivati i controlli del gioco (se presenti), ed anche tutte le shortcut (ad eccezione di quella per il Play, Pause, ecc.) vengono disattivate.

Tutti i pannelli di Unity, inclusa la Scene View, si comportano in maniera simile a quando il gioco è in stop. È possibile modificare i valori dei componenti mentre il gioco è in Play e addirittura trascinare oggetti dal pannello Project alla Hierarchy, o direttamente in scena (così come è possibile cancellarli, duplicarli, rinominarli, ecc.).

Allo stesso modo, si possono aggiungere o rimuovere componenti mentre il gioco è in esecuzione, creando la possibilità di testare in tempo reale situazioni che magari si verificano raramente o a caso (perché magari nel gioco c'è un intelligenza artificiale che non propone sempre le stesse situazioni).

Le funzioni Pause e Step

Una funzione fondamentale di Unity è la possibilità di mettere in pausa l'esecuzione del gioco premendo il tasto Pause (Ctrl + Shift + P), anche prima della pressione del Play, in modo che il gioco parta già in pausa.

Gli usi di questa funzione sono molteplici: di solito è utile mettere il gioco in pausa quando si vuole debuggare una scena in cui il ritmo di gioco è rapido. Premendo pausa, si può avere il tempo di analizzare la posizione dei gameObject, eventualmente ruotando la visuale nella Scene View, e di leggere tutti i parametri esposti dai vari componenti nell'Inspector, con la possibilità di modificarli con calma.

Ad esempio, per tarare la quantità di rimbalzo di un oggetto che cade su un piano, si potrebbe mettere il gioco in pausa per modificare la Bounciness di un materiale fisico, tirarlo su mediante il gizmo Spostamento, e poi togliere la pausa per vederlo cadere di nuovo, ripetendo l'operazione finché non si è soddisfatti.

Premere Pause ha un effetto leggermente diverso rispetto a modificare il TimeScale del gioco mettendolo a zero (una modifica che si può fare dal menu sotto Edit > Project Settings > Time, o anche da codice), perché mentre in quel caso il gioco è fermo ma attivo, in questo caso è completamente bloccato, quindi non riceve neanche input dall'utente o eventi di rete.

Per questo motivo in alcuni casi premendo Pause il gioco potrebbe saltare degli eventi di rete importanti, portando ad un crash o comunque ad un errore. A parte questi rarissimi casi, la possibilità di mettere il gioco in Pausa è fondamentale per poter analizzare gli oggetti in scena in giochi d'azione o simili.

Infine, il tasto Step (il terzo del pannellino in alto) permette di andare avanti nel gioco un frame alla volta. Questo permette di effettuare un debug accurato di tutte le funzioni che negli script vengono chiamate una volta per frame (chiamate Update, ma questo lo vedremo dopo), o di analizzare simulazioni fisiche ad ogni aggiornamento, per rilevare eventuali errori (si pensi ad un corpo che si muove a grandissima velocità, come un proiettile).

Ti consigliamo anche