Disons que j'ai une variable nommée buttonde type Buttonqui 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 accessavec celle-ci public accessdans l'inspecteur?
UI/ API MVC/ MVVMpour une énorme application (un client de jeu en fait) et j'ai dû séparer le UIdu 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 Unityet vous devez rechercher des choses hacky comme celle-ci.

privaten'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.