Skripting in Unity Grundkurs

Bedingungen mit "switch"

Testen Sie unsere 1985 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Bedingungen können nicht nur per "if" realisiert werden. Wann ein "switch" sinnvoll ist, darum geht es in diesem Film.
07:37

Transkript

In diesem Video lernen wir wie wir relativ umfangreiche und nicht grade einfach zu lesende else if-Abfragen kompakt in eine switch-Abfrage beziehungsweise Bedingung packen können. Stellen wir uns folgendes vor: Wir fragen zum Beispiel unsere boolVar Variable ab, die wir jetzt in einer Integer verwandeln und damit auch umbenennen und wir sagen 5. Diese Variable hat jetzt den Wert 5. Und jetzt fragen wir verschiedene Bedingungen ab. Also wenn boolVar=1 oder wenn boolVar=2 oder ==3. Jetzt habe ich mich natürlich vertan, die heißt jetzt intVar, deshalb kopiere ich mir das da oben raus und füge es hier unten weiterhin ein und das könnten wir ja so lange durcheksesieren bis wir schließlich an ein else if kommen, dass den Wert Var zurückgib, also sagt OK, jetzt stimmt meine Bedingung plötzlich und dann können wir sagen, ja intVar ist endlich 5. Was intern passiert während des Programmablaufs es wird geschaut innerhalb eines Frames beziehungsweise es kommt drauf an, ob unsere Abfrage in Start oder Update passiert. Was auf jeden Fall passiert ist, es wird alles abgefragt, was schließlich über unsere wahren Aussage, beziehungsweise über unsere Bedingung steht, die den Wert true, also wahr zurückgibt. Und wenn wir das jetzt weiterdenken und hier eine 10 reinschreiben und abfragen gegen 1, 2, 3, 4, 5 und so weiter, dann könnte man auf die Idee kommen, dass das ganz schon umständlich ist. Das geht auch leichter, beziehungsweise leichter und auch performanter als mit einer else if-Abfrage. Wir als Programmierer oder angehender Programmierer müssen uns auch überlegen Code zu schreiben, der möglichst performant ist, das heißt, der unseren Programmablauf nicht so sehr fordert oder wenn es besser geht, es auch besser zu tun. Und neben einer If-Abfrage gibt es da noch die Abfrage über switch. Wir merken uns also kurz diesen ganzen Blog und wechseln in das Skript Conditions_SWITCH. Auch hier, ich kopiere mir das einfach mal der Schnelligkeitshalber hier raus, deklarieren wir unsere Variable intVar mit dem Wert 5 und fragen jetzt nicht über eine lange Liste von else If-Abfragen ab, sondern über switch. Und das geht folgendermaßen. Wir benutzen zunächst das Schlüsselwort switch und dann eine Klammer, eine runde Klammer, um zu signalisieren, was möchten wir hier den abfragen, und zwar möchten wir intVar abfragen. Das klappt mit verschiedenartigen Variablen, in diesem Fall intVar, das bedeutet also ich schaue mir diese Variable, den Integer genauer an und entscheide je nachdem welchen Wert diese Variable hat, was weiter passieren soll. Genau wir bei if kommt jetzt der Rumpf dieser Abfrage und jetzt müssen wir die verschiedenen cases, also die verschiedenen Fälle deklarieren. Damit fangen wir an, zum Beispiel mit case1. Jetzt haben wir das Schlüsselwort case benutzt und sagen den Compiler, wenn intVar 1 ist, also wenn der Fall eintritt, dass intVar den Wert 1 hat, dann mache bitte zum Beispiel Debug.Log intVar ist 1. Hie steht jetzt der Befehl, was soll passieren, wenn der case, wenn der Fall eintritt intVar ist 1. Hierbei ist Schreibweise sehr sehr wichtig. Wir benutzen erst das Schlüsselwort case, dann welchen Inhalt soll meine Variable haben, ein Doppelpunkt um zu sagen, ab hier kommen die ganzen Befehle, die dann passieren sollen wenn, und wenn diese Befehle abgeschlossen sind, kommt das Schlüsselwort break zum tragen. Hiermit signalisieren wir, der ganze Fall ist abgeschlossen. Jetzt kann ein weiterer case folgen zum Beispiel case 5 und der einfachheitshalber Kopiere ich mir das jetzt einfach mal hier hin und sage OK beim Fall 5 ist intVar plötzlich 5 und so weiter und so weiter. Jetzt kann man auch hier beliebig viele cases, beliebig viele Fälle deklarieren, hinschreiben und man könnte mit diesem switch-Vergleich eine übersichtlichere und einfache Abfrage als mit sehr vielen else If-Abfragen herstellen. Es ist auch so, dass beim kompilieren und beim abfragen eine switch-Abfrage schneller abläuft als eine else if-Abfrage, besonders, wenn sehr viele else if-Abfragen hintereinander kämmen, was natürlich auch in vielen case-Abfragen resultieren würde, aber immer noch wäre der switch dann schneller. Es gibt beim switch dann noch eine Besonderheit, die mit dem else zu vergleichen ist. Hier müssen wir dann hinschreiben default und ich kopiere mir das auch nochmal hieraus und füge es darunter ein und dann schreibe ich hin intVar hat keinen vernünftigen Wert angenommen. Das bedeutet alle meine cases, die ich davor stehen habe und das können 200 Stück sein, haben nicht zugetroffen, beziehungsweise treffen nicht zu, sind nicht abgefeuert worden. Jetzt greift meine default-Anweisung, also wenn alles darüber nicht zutrifft, dann mache lieber mal das hier. Das ist auch eine gute Sache, um sich selbst quasi Fehler aufzuzeigen. Hier kann man zum Beispiel sagen, ich versuche gerade etwas zu analysieren, zu vergleichen mit meiner switch-Anweisung und keiner der von mir erwarteten Fälle ist zugetroffen, das heißt, irgendetwas stimmt mit meiner Variable nicht. Hier gebe ich mir mal lieber eine Fehlermeldung aus. Was im diesen Video also nun Kernpunkt war ist das die switch-Anweisung, bei sehr viel aufeinanderfolgend Abfragen ist denn meine Variable 1 oder 2 oder 3 oder x schneller ist als eine verschachtelte und immer wieder aneinandergereihte else if-Abfrage. Außerdem dient diese Schreibweise auch weiter oder besser der Übersicht als so etwas. Im Gegensatz zu else oder else if-Abfrage ist eine switch-Anweisung also etwas kompakter, übersichtlicher und anzuraten, wenn es um Vergleiche geht, die sehr viele Fälle aufweisen können. Experimentieren Sie doch einfach mal mit switch oder else if herum und schauen Sie was dabei alles möglich ist. Viel Spaß dabei.

Skripting in Unity Grundkurs

Greifen Sie mithilfe von C#-Skripts dynamisch in Ihr Unity-Projekt ein. Auch Programmier-Neulinge lernen Schritt für Schritt den Einstieg ins Skripting.

4 Std. 50 min (40 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Anleitung für Unity 5-Nutzer:

  • Schritt 1: Projekt in Unity 5 öffnen und die Meldung bestätigen, dass das Projekt ein Upgrade bekommt.
  • Schritt 2: Wenn die Meldung kommt, dass die API upgedatet werden muss, diese auch bestätigen

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!