Singleton in Unity - C#

Singleton in Unity

Le basi e alcune implementazioni di questo importante design pattern.

Il Singleton è un design patter molto utile quando la stessa classe debba essere riutilizzata per la durata dell’applicazione. Un esempio di utilizzo potrebbero essere un GameManager responsabile del calcolo dei punteggi o un AudioManager per la gestione di musiche ed effetti sonori.

Ad una prima occhiata l’argomento può risultare abbastanza complesso, ma è molto importante nell’ambito del game development. Vale quindi la pena approfondire l’argomento! 😀

Implementazione base

Ecco il nostro primo Singleton! Già così potrebbe andare, ma ci sono alcuni inconvenienti:

  1. E’ necessario “agganciare” lo script ad un GameObject nella hierarchy
  2. Non sappiamo l’ordine di chiamata degli Awake e rischiamo di accedere ai metodi del Singleton prima ancora che venga instanziato
  3. In caso volessimo usare lo script, dovremmo rinominarlo e modificarlo per ogni nuova classe

Vediamo quindi come risolvere i punti critici.

Fix dei punti 1 e 2

Per prima cosa faremo in modo di istanziare il Singleton nel momento in cui venga richiesto per la prima volta. In caso non fosse ancora presente, creeremo dapprima un GameObject a cui successivamente agganciare il nostro Singleton.

Non dobbiamo più preoccuparci di agganciare lo script ad un GameObject nella hierarchy (sarà lui stesso a provvedere) e nemmeno di eventuali Null Reference Exception.

Non ci resta che renderlo il più riutilizzabile possibile. Via con l’ultimo giro!

Singleton Generico (o anche detto fix del punto 3)

In questo ultimo snippet cercheremo di rendere il nostro pattern riutilizzabile senza dover “rittoccare” ogni volta.

Da ora in avanti non avremo più bisogno di duplicare e modificare ogni volta il nostro codice, ma basterà che la nostra nuova classe erediti dalla classe precedente. Così:

Conclusioni

Se siete arrivati fin qui, congratulazioni! Sapete padroneggiare una delle tecniche più usate nel mondo del game development. Fatene buon uso!

Alla prossima puntata!

Fondatore e sviluppatore software di Urkin. Conosce C++/C#/Java/Javascript e Unity. Da sempre appassionato di videogames e musica.

EXO per iOS confermato

Inizia il porting della versione iOS.
LEGGI
bloomingyoARway Store

Blooming yoAR way

Ci vediamo doppio! In occasione dell'edizione 2018 del Blooming festival, Urkin ha rilasciato non una, ma ben due app dedicate all'evento, sia per Android che iOS. Per vivere il Blooming al meglio! Fiorisci a modo tuo!
LEGGI

VR & AR per Ghost in the Shell

Ghost in the Shell, per chi ancora non lo conoscesse, è un franchise di fantascienza (costituito principalmente da manga, anime, videogiochi e romanzi) ambientato in un Giappone futuristico. Qui si svolgono le avventure della Sezione 9, un gruppo antiterroristico governativo capitanato dal maggiore Motoko Kusanagi, che ha il compito di affrontare e neutralizzare minacce di ogni tipo. Il fantasma nella macchina Nel mondo di Ghost in the Shell, la tecnologia ha permesso agli esseri umani di fondersi con le macchine e di ottenere corpi potenziati ciberneticamente che sono in grado di collegarsi alla rete tramite interfaccia cerebrale. Il cyberspazio è diventato…
LEGGI

U* AR

Nasce un nuovo servizio di Realtà Aumentata
LEGGI
Shares