Digamos que eu tenho uma variável chamada buttontype, Buttonque é obviamente System.Serializable.
Eu quero que essa variável seja atribuível através do inspetor, então eu faço isso public:
public class SomeScript : MonoBehaviour{
public Button button;
}
O que me dá isso:
Agora, quero manter o código limpo e seguro (organizado) e há uma verdadeira razão pela qual preciso preservar o encapsulamento.
Eu sei que existem várias maneiras de recuperar componentes em tempo de execução como transform.Find("Some/Genius/TypeUnsafe/Path")ou GameObject.Find("3 seconds scene iteration").GetComponent(...).eu quero evitar isso.
Como misturo uma variável private accesscom ela public accessno inspetor?
UI/ API MVC/ MVVMpadrão para um aplicativo enorme (um cliente de jogo na verdade) e eu tive que separar o UIarquivo API. Eu precisava atribuir valores através da causa do inspetor simplesmente - não há outra maneira. Find()Os métodos são do tipo inseguro e é mais fácil juntar as coisas arrastando e soltando. É muito, muito difícil criar uma estrutura clássica de POO Unitye você precisa procurar coisas hacky como essa.

privatenão se destina realmente a impedir que terceiros obtenham acesso a um campo, serve para fornecer uma maneira de dizer "não olhe atrás da cortina para o que estou realmente fazendo" - ou seja, é principalmente uma maneira de impedi- lo de obter acesso a ele.