Diciamo che ho una variabile chiamata button
di tipo Button
che è ovviamente System.Serializable
.
Voglio che la variabile sia assegnabile tramite l'ispettore, quindi la faccio public
:
public class SomeScript : MonoBehaviour{
public Button button;
}
Il che mi dà questo:
Ora, voglio mantenere il codice pulito e sicuro (organizzato) e c'è un vero motivo per cui devo conservare l'incapsulamento.
So che ci sono diversi modi per recuperare componenti in fase di esecuzione come transform.Find("Some/Genius/TypeUnsafe/Path")
o GameObject.Find("3 seconds scene iteration").GetComponent(...).
voglio evitarlo.
Come mescolo una variabile private access
con la sua public access
in Inspector?
UI
/ API
MVC
/ MVVM
pattern per un'applicazione enorme (un client di gioco in realtà) e ho dovuto separare UI
il file API
. Avevo semplicemente bisogno di assegnare valori attraverso la causa dell'ispettore - non c'è altro modo. Find()
i metodi non sono sicuri ed è più facile mettere insieme le cose trascinandole. È davvero molto difficile costruire un classico framework OOP con Unity
e devi cercare cose bizzarre come questa.
private
non è realmente destinato a impedire a terzi di accedere a un campo, ha lo scopo di fornire un modo per dire "non guardare dietro il sipario ciò che sto davvero facendo", ovvero è principalmente un modo per impedirti di accedervi.