Skripting in Unity Grundkurs

Input abfragen: Maus

Testen Sie unsere 1985 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Lernen Sie hier, Abfragen von Mausklicks zu realisieren. Über drei simple Funktionen fragen Sie die drei wichtigen Maustasten "Links", "Mitte" und "Rechts" ab.
07:02

Transkript

Da es ja nicht nur Input über die Tastatur gibt, sondern durchaus auch über die Maus, schauen wir uns die Eingabenabfrage der Maustasten jetzt in diesem Video genauer an. Dazu haben wir hier unsere Szene mit einem InputManager, das ist ein leeres Game Objekt, das auch schon ein Skript zugewiesen bekommen hat, das auch InputManager heißt. Hier sehen wir Abfragen über GetKey, GetButton und GetAxis, die ich jetzt auskommentieren werde über den Shortcut Strg K+C. Jetzt gibt es eine Abfrage von Input, daher auch das Schlüsselwort Input, "Liebes Programm, ich möchte jetzt Input abfragen", und dann GetMouse. und dann, wenn wir GetM.. schon schreiben, schlägt uns Visual Studio vor, was wir denn damit alles machen können, und dann sehen wir, es gibt GetMouseButton, GetMouseButtonDown und GetMouseButtonUp. Das ist sehr ähnlich, wenn wir jetzt hier ein bisschen hochscrollen, mit zum Beispiel InputGetButton. Hier wird eine Taste aus der Tastatur abgefragt, GetMouseButton fragt, na klar, natürlich Maustasten ab. Und ich fange jetzt einfach mal an mit GetMouseButton, dann benötigen wir eine runde Klammer auf und runde Klammer zu, und finalisieren die Zeile mit einem Semikolon. Fehlen tut hier natürlich jetzt noch, welchen Mausknopf soll ich denn abfragen? Und hier müssen wir, wir sehen es in der Vorschau, ein Integer eintragen, also eine ganze Zahl, zum Beispiel eine Null. Input.GetMouseButton(0); ist jetzt ein valider Befehl sozusagen, unser Visual Studio gibt uns hier keinen Fehler zurück, das würde bereits funktionieren. Wir tun mit diesem Befehl noch nichts, aber er kann problemlos ausgeführt werden. Ich kann hier auch GetMouseButton(250) eintragen, auch hier würde Visual Studio sagen, okay, ich tu da eine Integer-Zahl rein, also eine ganze Zahl, das ist okay, ich weiß allerdings nicht, ob es Mäuse mit 251 Tasten gibt, wir fangen ja bei null an zu zählen, also lassen wir es mal bei null. Die Null bedeutet hierbei immer die linke Maustaste. Wenn man das mal vergessen sollte und nicht mehr weiß, Moment, ging's jetzt bei null los oder bei eins, was war die linke und was war die rechte Maustaste, dann hilft hier wieder die Skripting API. Hier finden wir unter dem Oberbegriff Input.GetMouseButton Beispiele für null, eins und zwei. Und hier wird uns auch gesagt, null for left button, one for right button, two for the middle button. Und das ist so eine Standard Drei-Tasten-Maus, meistens braucht man gar nicht mehr, und dann weiß man, okay: null, eins und zwei sind meine Standard drei Maustasten links, rechts und Mitte. Und genau das Gleiche werde ich jetzt hier mal abfragen, if(Input.GetMouseButton(0); dann kommt wieder der Rumpf, unsere Bedingungen, und dann: Debug.Log("Linke Maustaste gedrückt"). Natürlich wieder mit einem Semikolon bestätigen, und jetzt schauen wir einfach mal, was passiert. Gespeichert haben wir das Ganze, gehen zurück in Unity, und starten die Szene. Jetzt klicke ich mal mit der linken Maustaste, und wir sehen, ich klicke sehr kurz, und trotzdem sind wir hier schon bei 75 Ausgaben, wenn ich das Ganze jetzt mal nicht collapse, die uns sagen, die linke Maustaste wurde gedrückt. Okay, das bedeutet, diese Abfrage passiert bereits mehrmals pro Sekunde, und zwar so schnell, wie unsere Frames berechnet werden. Denn GetMouseButton kontrolliert die ganze Zeit, pro Frame, ist der Maus-Button, null in diesem Fall, gerade gedrückt? Ja, ist er jetzt gedrückt, ist er jetzt gedrückt, 60, 70, 80 mal pro Sekunde, und wir als Menschen, wenn wir nicht gerade ganz schnell klicken, für uns bedeutet das, so schnell können wir gar nicht klicken, dass wir in einem Sechzigstel oder Siebzigstel der Sekunde den linken Mausknopf bereits loslassen, dass das hier nur einmal ausgegeben wird. Für diese einmaligen Events gibt es andere Funktionen als GetMouseButton, denn da gibt es zum Beispiel GetMouseButtonDown und GetMouseButtonUp. Auch hier habe ich jeweils die Null eingetragen für die linke Maustaste, und dann müssten wir hier anpassen "wird gedrückt", denn das fragt die gerade gedrückte Maustaste ab, das heißt "wurde gedrückt", denn das fragt den einen Moment ab, wo wir gerade die Taste nach unten gedrückt haben, und hier wurde losgelassen. Denn den Moment gibt es auch nur einmal, wir können nur in einem einzigen Moment, in einem Frame, in einem berechneten Bild, denn ein Update passiert ja pro Frame, die Maustaste loslassen und genauso drücken. Und hier sehen wir jetzt auch wieder, nach dem Speichern in Unity, was passiert, wenn ich hier die Maustaste jetzt drücke, und loslasse, passieren drei Sachen auf einmal, natürlich wird die ganze Zeit kontrolliert, ist die Maustaste gerade gedrückt, das hat hundertmal "ja" ergeben, aber nur einmal jeweils wurde hier gedrückt, und sie wurde einmal wieder losgelassen. Möchte ich also permanent kontrollieren, ob die Maustaste null, eins oder zwei gerade gedrückt wird, ist GetButton beziehungsweise GetMouseButton für mich wichtig. Möchte ich nur die Momente abpassen, wo die Maustaste gerade gedrückt wurde, oder gerade losgelassen wurde, brauche ich GetMouseButtonDown und GetMouseButtonUp. Diese ganzen Ausdrücke, diese ganzen Befehle hier, liefern mir jeweils true oder false zurück, das heißt, jo, gerade wird die Maustaste gedrückt, oder nein, gerade wir sie nicht gedrückt. Deshalb sind diese Anweisungen perfekt für Bedingungen. Experimentieren Sie doch vielleicht selber einmal mit den Abfragen der Maus-Buttons herum, versuchen Sie vieleicht auch mal, die anderen Maus-Buttons abzufragen, und in deren Abhängigkeit Sachen passieren zu lassen, 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!