Skripting in Unity Grundkurs

Bedingungen mit "if"

Testen Sie unsere 1985 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Ein Skript kommt selten ohne Bedingungen aus. Wann soll etwas passieren und wann nicht? Hier verfolgen Sie, wie Bedingungen mit dem Ausdruck "if" umgesetzt werden.
08:16

Transkript

Der Ablauf eines Spiels oder auch jeder anderen Applikation ist immer von gewissen Bedingungen abhängig. Was es mit diesen Bedingungen auf sich hat und wie wir diese in unseren Programmcode bekommen soll Inhalt dieses Videos sein. Die grundlegendste Bedingung bei einem Spiel zum Beispiel n. könnte der Input von den Benutzer, von dem Spieler sein. Das heißt, in Abhängigkeit davon, was der Spieler für ein Taste drückt, für eine Maustaste bedient, sollen gewisse Dinge passieren. Also ist eine Ablauf eines Programms niemals statisch, wie ein Fluss, der von A nach B fließt, sondern hat immer wieder Verzweigungen, die von gewissen Bedingungen abhängig sind. In Unity beziehungsweise beim Skripen, beim Programmieren mit Unity gibt es sogenannte If-Bedingung. Dafür habe ich hier schonmal ein Skript vorbereitet Conditions_IF, hier steht noch nicht viel drin, dass ist das Standardskript, wenn man gerade ein neues erstellt hat, und als Grundlage müssen wir nun ein weiteren Variablentyp verstehen, nämlich die variable beziehungsweise den variablen Typ bool. Wenn es um Bedingungen geht, dann werden ja gewisse Dinge abgefragt. Ist eine Sache so oder ist sie nicht so? Und hier haben wir eigentlich schon den Kern der Sache erreicht. Entweder gibt eine Bedingung jo, das ist so raus oder nein, es ist nicht so. Also ja oder nein, also im Englischen true oder false. Das heißt, wenn ich die Variable anlege, eine Variable von Typ bool, mit dem Namen boolVar kann die Werte true oder false haben. Wenn ich eine Variable von Typ bool anlege und keinen Wert vergebe, hat sie immer den Wert false. Intern kann man sich so merken 0 ist false, 1 ist true. Computer rechen ja immer gerne mit Nullen und Einsen und so wäre das repräsentiert. Ich lasse unsere Variable boolVar jetzt mal auf den Wert true wechseln, damit hätte ich die Variable deklariert und jetzt geht es an eine Bedingung. Dafür benutze ich jetzt unsere Funktion für die Initialisierung mit den Namen Start und beginne jetzt zunächst die Bedingung hinzuschreiben, also dem Compiler jetzt zu sagen, so ich möchte jetzt etwas, in Abhängigkeit von einer Bedingung passieren lassen und die If-Bedingung schreibt sich folgendermaßen: Das Schlüsselwort if, also wenn und dann eine runde Klammer auf. In diese runde Klammer auf kommt nun die Bedingung, die abgefragt werden soll. Also fragen wir zum Beispiel if boolVar==true und hier bitte beachten, dass wir das doppelte Gleichheitszeichen verwenden. Wenn ich das jetzt so schreiben würde, wäre das nicht erlaubt, denn das hier wäre eine Zuweisung. BoolVar ist jetzt true und kein Vergleich. Ist den boolVar true, ja oder nein? Wenn wir das soweit geschrieben haben, fehlt noch der Rumpf dieser If-Abfrage. Auch der Rumpf schreibt sich mit 2 geschweiften Klammern und jetzt können wir innerhalb dieses Rumpfes, dieser geschweiften Klammern hinschreiben, was denn passieren soll, wenn unsere Bedingung wirklich true ist. Also, wenn diese ganze Ausdruck wirklich true zurückliefert. Ja, das ist wahr. Hier können wir jetzt zum Beispiel reinschreiben: Ja, boolVar ist true. Schauen wir uns an was passiert. Ich speichere das, wechsele zurück in Unity, schmeiße unsere Skript mal auf irgendeine Objekt drauf und starte das Spiel mit geöffneter Console und wir sehen, ja, boolVar ist true. OK. Was jetzt also passiert ist zu Initialisierung beim Zeitpunkt Start in der Funktion Start wurde gefragt, hör mal, ist denn meine boolVar Variable true? OK das Stimmt. Dann führe ich diesen Befehl aus. Es kann ja auch sein, dass der Ausdruck hier drin mal nicht true zurückgibt, also, nee unsere boolVar Variable ist nicht true. Dann ändere ich die hier oben zum Beispiel auf false. Jetzt wäre hier nicht mehr Var, eigentlich müsste er das nicht ausführen, jetzt gibt es neben dem if, aber noch das Schlüsselwort else. Auch hier gibt es wieder einen Rumpf dazu, mit geschweiften Klammern repräsentiert und jetzt könnten wir hier zum Beispiel reinschreiben, dafür kopiere ich mir das Debug.Log und dann sagen wir: Nein, boolVar ist false. Was jetzt also passiert, beim Zeitpunkt Start wird geguckt welchen Wert hat den boolVar. Ist dieser Wert true, nein, er ist false. Also wird alles das, was hier steht nicht ausgeführt, es wird einfach ignoriert. Wenn kein else hier stehen würde, würde der Compiler einfach weitergehen und mit Dingen beginnen, die hier unten stehen. Mit dem Stichwort else sagen wir jetzt, wenn das hier oben nicht zutrifft, sollst du bitte trotzdem etwas tun. Natürlich was anderes, als was hier drin steht, er führt dann diesen Befehl aus. Schauen wir mal was passiert. Ich starte nochmal das Spiel und richtigerweise wird uns jetzt nein, boolVar ist false ausgegeben. Wir haben jetzt also die Bedingungsabfrage mit If kenngelernt. If besteht aus dem Schlüsselwort if, der nachfolgenden Abfrage: Ist das wirklich so? Und dann dem Rumpf. Was soll den bitte passieren, wenn das hier oben richtig ist? Außerdem das Schlüsselwort else mit einem weiteren Rumpf: Was soll den bitte passieren, wenn dieser Ausdruck hier oben falsch ist. Hier kommen die logischen Operatoren wieder zum tragen. Ich könnte nämlich zum Beispiel abfragen, ungleich true. Wenn boolVar nicht gleich, also !=true ist, mache bitte das hier. Was wird jetzt wohl passieren, wenn ich in den PlayMode Unity nochmal gehe? Er gibt natürlich aus: Ja, boolVar ist true. Das was hier im Klartext steht ist natürlich falsch. Was der Programmcode allerdings tut ist richtig. Er schaut nach ist boolVar nicht true, also nicht wahr, was soviel bedeutet wie ist boolVar auf false, das stimmt ja, also tue ich doch mal all das was hier drin steht, auch wenn das hier jetzt nicht mehr stimmen würde. Was wir außerdem kenngelernt haben ist die neue Variable bool. Auch hier kann ich natürlich wieder public vorschreiben, sie damit erstens zugreifbar von anderen Skripts machen und sie wieder dem Inspektor hier oben bekannt machen. Jetzt kann ich hier natürlich wieder boolVar auf false, im Moment ist die Checkbox nicht gecheckt, oder auf true setzen. Jetzt ist boolVar true. If Conditions oder Abhängigkeiten beziehungsweise Bedingungen an sich sind sehr wichtig für Programmabläufe und Abfragen zur Laufzeit des Programms. Experimentieren Sie doch einfach mal ein bisschen mit diesen Variablen herum, versuchen Sie verschiedene logische Operatoren und schauen Sie was ausgeführt wird.

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!