Come Riconoscere che ci si trova nel Play Mode in Unity3D

marcosecchi Tutorials, Unity3D 0 Comments

Una delle prime cose che si imparano quando si comincia a lavorare in Unity3D è che le modifiche effettuate durante il Play Mode non sono persistenti. Questo significa che, se viene cambiato qualche parametro, questo tornerà allo stato originale una volta che si cliccherà il pulsante di stop: si tratta a tutti gli effetti di un revert forzato delle vostre operazioni…

Questo sistema è stato ovviamente studiato per permettere allo sviluppatore di effettuare tutte le prove del caso su una scena, senza però andare a rovinare la scena stessa. Quando però si è agli inizi, spesso ci si dimentica di questa funzionalità e, spesso, ci si trova ad effettuare modifiche importanti, mentre ci si è in Play Mode (pensando di non esserci) e a perdere tutte le modifiche una volta che lo si interrompe.

Come riconoscere di essere in Play Mode

Unity permette di riconoscere il Play Mode colorando i pulsanti della Toolbar in azzurro e tinteggiando leggermente il colore dell’interfaccia.

La tinta può essere modificata a piacimento, dalla finestra Preferences > Colors e selezionando il colore preferito dall’opzione Playmode tint. Nel mio caso ho optato per un leggero tono azzurrato, che non sia particolarmente aggressivo.

Tint mode

Fig. 1 – Selezionare la tinta per il Play mode

Rendere più visibili gli elementi durante il Play Mode

In alcuni casi può essere interessante discriminare il fatto che ci si trovi all’interno della scena ed in Play Mode: le possibilità sono innumerevoli, ad esempio potrei non voler mostrare alcuni elementi della GUI una volta che produco il compilato per un cliente.

Nel nostro caso, possiamo pensare di rendere più visibili alcuni game objects all’interno della scena: la cosa è semplicissima una volta che si viene a conoscenza del valore booleano Application.isEditor, che ci ritorna true se l’applicazione sta girando all’interno dell’Editor di Unity.

Nell’esempio seguente, ho creato un semplice script che assegna un determinato materiale (di colore rosso vivo) ad una serie di oggetti nella scena: ovviamente è possibile sbizzarrirsi sul come evidenziare gli elementi.

Una volta inserito lo script in un qualsiasi gameobject nella scena ed assegnati materiale e lista di oggetti, durante il Play Mode si occuperà di effettuare le dovute sostituzioni.

Nota: taggando l’oggetto come EditorOnly, si avrà la garanzia che l’oggetto (e quindi lo script) non verrà esportato nella build finale.

Unity Editor

Fig. 2 – Lo Unity Editor

Unity Editor in Play Mode

Fig. 3 – Lo Unity Editor in Play Mode

Come alternativa, potreste tranquillamente utilizzarlo per creare un led che diventa rosso quando la scena è in Play Mode!