Überblick über das neue Eingabesystem von Unity

Das neue Eingabesystem in Unity bietet einen aktualisierten, flexiblen und intuitiveren Ansatz für die Handhabung von Eingaben in Spielen. Mit diesem System können Entwickler eine Vielzahl von Geräten bedienen, von Gamecontrollern bis hin zu VR-Handys, und so das Gameplay dynamischer und immersiver gestalten.

1. Warum das neue System

Das traditionelle Eingabesystem in Unity war in seinen Fähigkeiten eingeschränkt und nicht so erweiterbar. Das Neue Eingabesystem bietet eine einheitliche API, die bisherige Einschränkungen beseitigt und erweiterte Funktionen für die moderne Spieleentwicklung bereitstellt.

2. Einrichten

Um das neue Eingabesystem verwenden zu können, muss es zunächst über den Paketmanager in Unity installiert werden. Nach der Hinzufügung erfordert der Übergang vom alten System bestimmte Anpassungen in Skripten und Einstellungen.

3. Hauptmerkmale

  • Aktionen und Bindungen: Anstatt direkt auf Schaltflächen oder Tasten zu verweisen, definieren Entwickler Aktionen und binden diese Aktionen dann an bestimmte Tasten oder Tasten.
  • Gerätevariabilität: Unterstützt problemlos mehrere Geräte, von herkömmlichen Gamepads bis hin zu Touchscreens und VR-Handys.
  • Spieler-Steuerelemente: Bietet einen integrierten Mechanismus zum erneuten Binden von Steuerelementen, sodass Spieler Steuerelemente nach ihren Wünschen einrichten können.
  • Erweiterte Ereignisbehandlung:Ereignisse können auf verschiedene Arten verarbeitet werden, sei es abfragebasiert oder rückrufbasiert, was mehr Kontrolle bietet.

4. Erstellen einer Eingabeaktion

Eine Eingabeaktion ist ein neuer Asset-Typ, der die Definition von Eingabeverhalten ermöglicht, ohne dass Skripts geschrieben werden müssen. Sobald es erstellt wurde, kann es in ein Skript eingefügt werden, wodurch das Gameplay direkt mit den Spielereingaben verknüpft wird.

5. Implementierung im Scripting

  • Das neue Eingabesystem lässt sich nahtlos in die Unity-Skriptumgebung integrieren. Anstelle der älteren Methoden 'Input.GetKey' oder 'Input.GetAxis' verwendet dieses System „Aktionen“, die innerhalb von Skripten aufgerufen werden können. Sehen Sie sich das folgende Beispiel an:
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerMovement : MonoBehaviour
{
    public float speed = 5.0f;
    private Vector2 moveInput;

    public void OnMove(InputAction.CallbackContext context)
    {
        moveInput = context.ReadValue<Vector2>();
    }

    void Update()
    {
        Vector3 move = new Vector3(moveInput.x, 0, moveInput.y) * speed * Time.deltaTime;
        transform.Translate(move);
    }
}

Lassen Sie uns das oben bereitgestellte Codebeispiel aufschlüsseln:

  • Namespaces: Der Namespace 'UnityEngine.InputSystem' ist zwingend erforderlich, um die neuen Funktionalitäten nutzen zu können.
  • 'moveInput': Diese Variable speichert die Eingabewerte, die üblicherweise horizontale und vertikale Eingaben darstellen.
  • 'OnMove()': Als öffentliche Funktion definiert, kann „OnMove“ direkt mit einer Eingabeaktion im Unity-Editor verknüpft werden. Die Methode verwendet 'InputAction.CallbackContext', um die Eingabewerte zu lesen und sie unserer Variablen 'moveInput' zuzuweisen.
  • 'Update()': Bei der Methode 'Update' bestimmen die hinterlegten Eingabewerte die Bewegungsrichtung. Die Eingabe wird in einen 3D-Vektor für die Zeichenbewegung übersetzt, wobei die definierte Geschwindigkeit und Unity 'Time.deltaTime' für rahmenunabhängige Bewegung berücksichtigt werden.

Damit dieses Skript funktioniert, ist es wichtig, die Methode 'OnMove' über den Unity-Editor mit einer Eingabeaktion zu verknüpfen. Diese Verbindung stellt sicher, dass, wenn ein Spieler eine Eingabe macht (z. B. das Bewegen eines Joysticks oder das Drücken von Pfeiltasten), die entsprechende Aktion die gewünschte Funktion des Skripts auslöst.

Abschluss

Das neue Eingabesystem in Unity ist eine leistungsstarke und notwendige Weiterentwicklung, die auf die Anforderungen der modernen Spieleentwicklung abgestimmt ist. Es bietet Vielseitigkeit, Präzision und Benutzeranpassung und macht das Spiel interaktionen ansprechender und reaktionsschneller.