Översikt över Unitys nya inmatningssystem

Det nya inmatningssystemet i Unity ger ett uppdaterat, flexibelt och mer intuitivt sätt att hantera indata i spel. Med det här systemet kan utvecklare tillgodose en mängd olika enheter, från spelkontroller till VR-telefoner, vilket gör spelandet mer dynamiskt och uppslukande.

1. Varför det nya systemet

Det traditionella inmatningssystemet i Unity var begränsade i sina möjligheter och inte lika utbyggbart. New Input System erbjuder ett enhetligt API, som adresserar tidigare begränsningar och tillhandahåller avancerade funktioner för modern spelutveckling.

2. Installation

För att börja använda det nya inmatningssystemet måste det först installeras från pakethanteraren i Unity. När den väl har lagts till kräver övergången från det gamla systemet vissa justeringar i skript och inställningar.

3. Nyckelfunktioner

  • Åtgärder och bindningar: Istället för att direkt referera till knappar eller nycklar, definierar utvecklare åtgärder och binder sedan dessa åtgärder till specifika tangenter eller knappar.
  • Enhetsvariation: Stöder enkelt flera enheter, från traditionella gamepads till pekskärmar och VR-telefoner.
  • Spelarkontroller: Tillhandahåller en inbyggd mekanism för återbindningskontroller, så att spelare kan ställa in kontroller efter önskemål.
  • Avancerad händelsehantering:Händelser kan bearbetas på olika sätt, oavsett om det är pollingbaserat eller callback-baserat, vilket ger mer kontroll.

4. Skapa en inmatningsåtgärd

En inmatningsåtgärd är en ny tillgångstyp som gör det möjligt att definiera indatabeteenden utan att behöva skriva skript. När det väl har skapats kan det släppas in i ett manus och kopplar spelet direkt till spelaringångar.

5. Implementering i skript

  • Det nya inmatningssystemet integreras sömlöst med Unity-skriptmiljön. Istället för de äldre metoderna 'Input.GetKey' eller 'Input.GetAxis', använder detta system "åtgärder" som kan anropas i skript. Kontrollera exemplet nedan:
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);
    }
}

Låt oss dela upp det medföljande kodexemplet ovan:

  • Namnutrymmen: Namnutrymmet 'UnityEngine.InputSystem' är viktigt för att kunna använda de nya funktionerna.
  • 'moveInput': Denna variabel lagrar ingångsvärdena, som vanligtvis representerar horisontella och vertikala indata.
  • 'OnMove()': Definierat som en offentlig funktion, 'OnMove' kan länkas direkt till en inmatningsåtgärd i Unity Editor. Metoden använder 'InputAction.CallbackContext' för att läsa ingångsvärdena och tilldela dem till vår 'moveInput' variabel.
  • 'Update()': I metoden 'Update' bestämmer de lagrade ingångsvärdena rörelseriktningen. Ingången översätts till en 3D-vektor för karaktärsrörelse, med hänsyn tagen till den definierade hastigheten och Unity 'Time.deltaTime' för bildoberoende rörelse.

För att få det här skriptet att fungera är det viktigt att länka 'OnMove'-metoden till en Input Action via Unity Editor. Denna anslutning säkerställer att när en spelare ger input (som att flytta en joystick eller trycka på piltangenterna), utlöser motsvarande åtgärd det önskade skriptet funktion.

Slutsats

Det nya inmatningssystemet i Unity är en kraftfull och nödvändig utveckling, som är i linje med behoven för modern spelutveckling. Det erbjuder mångsidighet, precision och användaranpassning, vilket gör spelet interactions mer engagerande och lyhört.