Nehmen wir an, ich habe eine Variable mit dem Namen button
type, Button
was natürlich der Fall ist System.Serializable
.
Ich möchte, dass diese Variable über den Inspektor zugewiesen werden kann, also mache ich es public
:
public class SomeScript : MonoBehaviour{
public Button button;
}
Was mir das gibt:
Jetzt möchte ich den Code sauber und sicher halten (organisiert) und es gibt einen echten Grund, warum ich die Kapselung beibehalten muss.
Ich weiß, dass es mehrere Möglichkeiten gibt, Komponenten zur Laufzeit abzurufen, transform.Find("Some/Genius/TypeUnsafe/Path")
oder GameObject.Find("3 seconds scene iteration").GetComponent(...).
ich möchte das vermeiden.
Wie mische ich eine Variable private access
mit der public access
im Inspektor?
UI
/ API
MVC
/ MVVM
Muster für eine riesige Anwendung (eigentlich ein Spielclient) und ich musste das UI
von dem trennen API
. Ich musste einfach über den Inspektor Werte zuweisen - es gibt keinen anderen Weg. Find()
Methoden sind typunsicher und es ist einfacher, Dinge durch Ziehen und Ablegen zusammenzusetzen. Es ist wirklich sehr, sehr schwer, ein klassisches OOP-Framework zu erstellen, Unity
und Sie müssen nach solchen hackigen Dingen suchen.
private
soll nicht wirklich verhindern, dass Dritte Zugang zu einem Feld erhalten, sondern soll eine Möglichkeit bieten, zu sagen: "Schau nicht hinter den Vorhang, was ich wirklich tue" - das heißt, es ist meistens eine Möglichkeit dazu verhindern Sie, dass Sie Zugriff darauf erhalten.