Spesso quando ci si approccia a Unity si fa confusione tra ciò che deve essere inserito in Awake e cosa in Start. Di seguito le sostanziali differenze.

Awake

Viene eseguita una sola volta, arbitrariamente e non ordinata (in sostanza non si può sapere se un oggetto venca “svegliato” prima di un altro, a meno di averne impostato lo Script Order nelle opzioni di progetto).

Deve contenere unicamente le inizializzazioni delle proprietà interne dell’oggetto a cui si riferisce (le private, le base. o le this. per intenderci). Dunque non può contenere riferimenti ad altri oggetti oppure a Singleton in quanto appunto non se ne conosce l’ordine di esecuzione.

Viene sempre eseguita anche se l’oggetto non è abilitato.

Viene sempre eseguita prima della funzione Start() dell’oggetto stesso.

Start

Viene eseguita una sola volta e può contenere inizializzazioni con riferimenti ad altri oggetti della scena. E’ necessario farlo qui e non in Start() in quanto se lo si facesse in Start() si rischierebbe di utilizzare parametri di oggetti non ancora inizializzati con Awake() in quanto quest’ultima viene eseguita in modo non in ordinato.

Viene eseguita solo se l’oggetto è attivo, e solo la prima volta (successive disattivazioni/attivazioni non rieseguono la funzione).

Viene eseguita dopo Awake() e prima di Update().

Aiuto aziende e professionisti che hanno bisogno di sviluppare in modo creativo, alternativo ed efficace la loro identità digitale e che desiderano ottenere visibilità e risultati concreti attraverso lo sviluppo di strumenti online dall'elevata innovazione e personalizzazione (3D, Realtà Virtuale, Realtà Aumentata, Advergame, etc)