Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Skripting in Unity Grundkurs

Input abfragen: "GetButton"

Testen Sie unsere 2015 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Was für Tasten gilt, klappt auch bei Buttons, den selbst programmierten grafischen Schaltflächen Ihrer Anwendung. Wie Sie solche Klicks per "GetButton" und Konsorten abfragen, erfahren Sie hier.
06:46

Transkript

Input, also Eingaben in unser Spiel abzufragen, geht auf verschiedenartige Weisen. Eine etwas erweiterte als zum Beispiel über GetKey ist die Methode mit GetButton, die wir uns in diesem Video anschauen werden. Für GetButton müssen wir uns vorher noch den InputManager ins Gedächtnis rufen. Den rufen wir auf über Edit Hier rechts sehen wir jetzt im Inspector unsere Achsen, die wir definiert haben. Jetzt kann man zunächst ein bisschen durcheinander kommen, hier habe ich doch Achsen, ich möchte aber Buttons abfragen, Ja, und das hier, unser Fire1, also ein von Unity vorgebener Button, mit dem Namen FIre 1 wäre hier eine Repräsentation eines Buttons, also eines Knopfes, und keiner Achse. Sowas wie horizontal und vertical wären, na klar, Achsen. Wir merken uns also einmal diesen Button, Fire1, das kann ja alles mögliche sein, auch wir selbst können Buttons definieren, und jetzt steigen wir nochmal in unseren InputManager ein, und kucken uns an, wie wir Input per GetButton abfragen können. Hier die Abfragen über GetKey werde ich jetzt mal auskommentieren, das habe ich gemacht über die Funktion Steuerung K+C, und dann werde ich mir einen Befehl davon klauen, ihn kopieren, und die Kommentare erstmal wieder rauslöschen. Statt GetKey benutzen wir jetzt GetButton. Und hier haben wir auch eine Möglichkeit, GetButton und GetButtonDown und GetButtonUp zu benutzen. wie hier oben, wir sehen das noch am Kommentar, GetKey, GetKeyDown, GetKeyUp. Ich mache normal jetzt erstmal GetButton. Was wir jetzt nicht mehr verwenden dürfen ist KeyCode. Denn, halten wir mal die Maus etwas länger über diesen Button, können wir jetzt ein Button name eintragen. KeyCode muss also verschwinden, und hier muss ein String rein. denn Namen werden immer mit Strings, also mit Zeichen, mit Buchstabenketten angegeben. Und jetzt ist es auch wichtig und klar, warum wir uns diesen Namen hier im InputManager merken müssen. Denn am besten kopieren wir uns ihn raus, verschreiben wäre hier sehr fatal, dann funktioniert die Funktion nämlich nicht mehr, und fügen ihn zwischen den Anführungszeichen ein. Wir haben nun also einen validen, einen richtigen Befehl in eine Abfrage gepackt, und, es ist nicht mehr "W", sondern das Ganze nenne ich jetzt hier Fire1. "Wurde losgelassen" ist natürlich im Moment Quatsch, das soll "wird gedrückt" heißen, ganz so, wie hier oben, über GetKey. Zunächst erstmal testen, zurück in Unity, und schauen, ob's funktioniert. Ja, wir sehen, ich drücke hier die Maustaste, das ist ja auch hier definiert, ich könnte auch LEFT CTRL drücken, das tue ich jetzt, und wir sehen, Immer wenn ich die entsprechende Tasten, den entsprechenden Button hier drücke, dann funktionierts, dann wird die Funktion aufgerufen, und Fire1 wird gedrückt, wird in die Konsole ausgegeben. Warum machen wir das jetzt, warum machen wir das hier über GetButton, hier oben haben wirs noch im Kommentar, warum hier über GetKey? Das hat einen ganz wichtigen Nutzen, der auch durchaus sinnvoll ist, weil, stellen Sie sich vor, Sie sagen, mein Charakter soll nach vorne laufen, wenn ich die "W"-Taste drücke. Jetzt gibt es aber auch Spieler, die gerne ihre Charaktere über die Pfeiltasten steuern. Was wir also hier machen müssten, okay, ich frage das hier noch über "W" ab, und ich füge dann eine nächste Frage an, wo ich KeyCode und dann ArrowUp zum Beispiel benutze, um die Steuerung nach vorne zu realisieren. Das wären schon zwei Abfragen, die wir auch wiederum hinschreiben würden, die würden in unserem Code stehen, und die würden allerdings beide nur den Charakter nach vorne steuern. Hier kann ich GetButton benutzen, und greife somit auf ein Unity-internes System, den InputManager zu, und kann hier bereits vier verschiedene Werte vergeben, denn wir haben hier einen Negative Button, einen Positive Button, und auch alternative Negative und Positive Buttons. Ich kann also im Gegensatz hierzu einmal hinschreiben GetButton("Fire1"), und hätte damit die gesamte Bandbreite dieses Buttons abgedeckt. Ein weiterer Vorteil ist, wir könnten es den Spielern zum Beispiel ermöglichen, selber Tasten zu vergeben, wenn wir hier, und so wird das genannt, hardcoded die "W"-Taste vergeben, also hart in den Code, ja, reingecodet, nicht veränderbar, wenn das Spiel einmal gebaut wurde, dann wird das auf die "W"-Taste beschränkt bleiben. Wenn wir hier aber den Spielern über GetButton("Fire1") die Möglichkeit geben, selber Buttons zu vergeben, dann bringen wir ein bisschen Komfort in unser Spiel mit ein. denn wir wissen, durch den InputManager, haben die Spieler die Möglichkeit, selber Tasten zu vergeben. und so beschränken wir es nicht explizit auf eine Taste, sondern lassen das Ganze quasi dynamisch, weil wir eine dynamische Referenz setzen, auf etwas, das wir selbst belegen, das wir selbst vergeben können. GetButton ist also um einiges komfortabler, vielleicht auch ein wenig aufwändiger, da wir hier noch mit dem InputManager arbeiten müssen, aber die kleine Mehrarbeit zahlt sich auf jeden Fall am Ende durch Dynamik und dynamisch vergebene Referenzen auf Tasten aus. Ich persönlich würde empfehlen, Tastatureingaben über GetButton und den InputManager zu realisieren. So ist die eigene Arbeit auch viel dynamischer, und wenn wir jetzt plötzlich wollen, die SHIFT-Taste beispielsweise für's Rennen gefällt uns doch nicht, können wir in Unity weiterarbeiten, hier die Taste ändern, und alles bleibt, so wie es ist, ohne dass wir am Code irgendetwas ändern müssten.

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!