Menu
CoddyTech

Benannte Tasten

Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 21 von 85.

Neben Tasten gibt es in Unity Schaltflächen: Namen, die im Input Manager (Edit, Project Settings, Input Manager) aufgeführt sind und jeweils einer oder mehreren Tasten zugeordnet sind. Input.GetButtonDown("Fire1") fragt nach dem Namen, nicht nach einer Taste. Ein neues Projekt enthält diese:

  • "Jump": Leertaste
  • "Fire1": linke Strg-Taste oder linke Maustaste
  • "Fire2": linke Alt-Taste oder rechte Maustaste
  • "Submit" und "Cancel": Eingabetaste und Esc

Gamepad-Schaltflächen sind denselben Namen zugeordnet, und die Tasten können im Input Manager geändert werden, ohne den Code anzufassen. GetButton, GetButtonDown und GetButtonUp funktionieren wie GetKey, GetKeyDown und GetKeyUp. Dieser Blaster protokolliert bei jedem Drücken von Strg oder jedem Klick einen Schuss:

void Update()
{
    if (Input.GetButtonDown("Fire1"))
    {
        Debug.Log("Shot!");
    }
}

Der Name ist eine Zeichenfolge, daher wird ein falsch geschriebener Name trotzdem kompiliert. Unity sucht ihn nach, wenn die Zeile ausgeführt wird. Wenn keine Schaltfläche diesen Namen hat, wirft Unity in jedem Frame eine Ausnahme: ArgumentException: Input Button Fier1 is not setup. Wenn du diese Meldung siehst, vergleiche den Namen in deinem Code mit der Liste im Input Manager.

challenge icon

Aufgabe

Einfach

Behebe den Hopser des Frosches und lass ihn wieder landen.

  1. Drücke „Spielen“: In der Console wird ein Fehler zur Schaltfläche "Jumpp" angezeigt. Ändere sie zu "Jump".
  2. Füge ein zweites if für Input.GetButtonUp("Jump") hinzu, das new Vector3(0, hop, 0) von transform.position abzieht.

Drücke „Spielen“, halte die Leertaste gedrückt und lass sie los: Der Frosch hüpft nach oben und landet dann wieder. Klicke anschließend auf „Prüfen“.

Probier es selbst

using UnityEngine;

public class Hopper : MonoBehaviour
{
    public float hop = 1.5f;

    void Update()
    {
        if (Input.GetButtonDown("Jumpp"))
        {
            transform.position += new Vector3(0, hop, 0);
        }
    }
}

Alle Lektionen in Unity-Scripting: Grundlagen

Übe selbstständig: Unity-Playground