Disons que j'ai une variable nommée button
de type Button
qui est bien sûr System.Serializable
.
Je veux que cette variable soit assignable via l'inspecteur, donc je le fais public
:
public class SomeScript : MonoBehaviour{
public Button button;
}
Ce qui me donne ça:
Maintenant, je veux garder le code propre et sécurisé (organisé) et il y a une vraie raison pour laquelle je dois préserver l'encapsulation.
Je sais qu'il existe plusieurs façons de récupérer des composants lors de l'exécution, transform.Find("Some/Genius/TypeUnsafe/Path")
ou GameObject.Find("3 seconds scene iteration").GetComponent(...).
je veux éviter cela.
Comment mélanger une variable private access
avec celle-ci public access
dans l'inspecteur?
UI
/ API
MVC
/ MVVM
pour une énorme application (un client de jeu en fait) et j'ai dû séparer le UI
du API
. J'avais besoin d'attribuer des valeurs via la cause de l'inspecteur simplement - il n'y a pas d'autre moyen. Find()
les méthodes ne sont pas sécurisées, et il est plus facile de rassembler les choses en faisant glisser et déposer. Il est vraiment, vraiment difficile de construire un cadre OOP classique Unity
et vous devez rechercher des choses hacky comme celle-ci.
private
n'est pas vraiment destiné à empêcher un tiers d'accéder à un champ, il est destiné à fournir un moyen de dire "ne regardez pas derrière le rideau ce que je fais vraiment" - c'est-à-dire, c'est surtout un moyen de vous empêcher d'y accéder.