Skip to content Skip to sidebar Skip to footer

Awake e Start di Unity spiegati facile

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().