Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |
theorie:patterns [2023/03/09 11:16] – [Hilfreiche Entwurfsmuster] spielzimmer | theorie:patterns [2023/03/11 10:40] (aktuell) – Objektorientierung Kapitel angelegt spielzimmer |
---|
| |
Wir können zum Beispiel ein [[https://gamedevbeginner.com/interfaces-in-unity/|Interface namens IClickable schreiben, die die Methode "Interact()" definiert]]. Im Player Skript (oder wo sonst User Input abgehandelt wird) sind wir dadurch unabhängig von allen einzelnen Szenenelementen, auf die man klicken kann. Wir brauchen nur das GameObject mit TryGetComponent fragen, ob es das Interface IClickable bereitstellt, und falls ja seine Interact Methode ausführen. Was im Einzelnen passiert steht brav in der Klasse des Objekts, auf das geklickt wurde. | Wir können zum Beispiel ein [[https://gamedevbeginner.com/interfaces-in-unity/|Interface namens IClickable schreiben, die die Methode "Interact()" definiert]]. Im Player Skript (oder wo sonst User Input abgehandelt wird) sind wir dadurch unabhängig von allen einzelnen Szenenelementen, auf die man klicken kann. Wir brauchen nur das GameObject mit TryGetComponent fragen, ob es das Interface IClickable bereitstellt, und falls ja seine Interact Methode ausführen. Was im Einzelnen passiert steht brav in der Klasse des Objekts, auf das geklickt wurde. |
| |
| ===== Objektorientierung ===== |
| |
| Ganz allgemein bietet die Verwendung der [[wpde>Objektorientierung|objektorientierten]] Programmiersprache [[wpde>C-Sharp|C#]] die Möglichkeit, meinen Code in Klassen und [[wpde>Methode_(Programmierung)|Methoden]] zu strukturieren. Das heißt ich denke mir Namen für Code Bausteine aus, die ich überall verwenden kann wo ich sie brauche ohne den Code kopieren zu müssen. Wenn ich also in so einem Code Baustein einen Bug fixe, dann brauche ich nicht mehr alle Stellen suchen, wohin ich diesen Bug kopiert habe. |
| |
| Außerdem kann ich dadurch den Code lesbarer machen. In FixedUpdate zum Beispiel passiert sehr viel nacheinander. Ich kann für jedes "Kapitel" eine Methode erstellen, sodass in FixedUpdate nur noch die Liste der Kapitelnamen steht und ich schnell einen Überblick bekomme, was in welcher Reihenfolge passiert. In den Methoden sehe ich dann nach, wenn in diesem Teilbereich etwas nicht funktioniert. |
| |
===== State Machine ===== | ===== State Machine ===== |