Oversigt over Unitys nye inputsystem
Det nye inputsystem i Unity giver en opdateret, fleksibel og mere intuitiv tilgang til håndtering af input i spil. Med dette system kan udviklere tage højde for en række forskellige enheder, fra spilcontrollere til VR-håndsæt, hvilket gør gameplayet mere dynamisk og fordybende.
1. Hvorfor det nye system
traditionelle inputsystem i Unity var begrænset i sine muligheder og ikke så udvidelsesmuligheder. New Input System tilbyder en samlet API, der adresserer tidligere begrænsninger og giver avancerede funktioner til moderne spiludvikling.
2. Sætte op
For at begynde at bruge det nye inputsystem skal det først installeres fra Package Manager i Unity. Når først det er tilføjet, kræver overgangen fra det gamle system visse justeringer i scripts og indstillinger.
3. Nøglefunktioner
- Handlinger og bindinger: I stedet for direkte at referere til knapper eller taster, definerer udviklere handlinger og binder derefter disse handlinger til specifikke taster eller knapper.
- Enhedsvariabilitet: Understøtter nemt flere enheder, fra traditionelle gamepads til touchskærme og VR-håndsæt.
- Spillerkontroller: Giver en indbygget mekanisme til genbindingskontroller, hvilket giver spillerne mulighed for at konfigurere kontroller som ønsket.
- Avanceret hændelseshåndtering:Begivenheder kan behandles på forskellige måder, uanset om det er polling-baseret eller callback-baseret, hvilket giver mere kontrol.
4. Oprettelse af en inputhandling
En inputhandling er en ny aktivtype, der giver mulighed for at definere inputadfærd uden at skulle skrive scripts. Når det er oprettet, kan det lægges ned i et script, der forbinder gameplay direkte med spillerens input.
5. Implementering i scripting
- Det nye inputsystem integreres problemfrit med Unity-scriptmiljøet. I stedet for de ældre 'Input.GetKey' eller 'Input.GetAxis' metoder, bruger dette system 'handlinger', der kan kaldes i scripts. Tjek eksemplet nedenfor:
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);
}
}
Lad os nedbryde det medfølgende kodeeksempel ovenfor:
- Navneområder: 'UnityEngine.InputSystem' navneområdet er afgørende for at kunne bruge de nye funktioner.
- 'moveInput': Denne variabel gemmer inputværdierne, der almindeligvis repræsenterer vandrette og vertikale input.
- 'OnMove()': Defineret som en offentlig funktion, 'OnMove' kan linkes direkte til en inputhandling i Unity-editoren. Metoden bruger 'InputAction.CallbackContext' til at læse inputværdierne og tildele dem til vores 'moveInput' variabel.
- 'Update()': I 'Update' metoden bestemmer de lagrede inputværdier bevægelsesretningen. Inputtet er oversat til en 3D-vektor til karakterbevægelse, idet der tages højde for den definerede hastighed og Unity 'Time.deltaTime' for billeduafhængig bevægelse.
For at få dette script til at fungere, er det vigtigt at linke 'OnMove'-metoden til en inputhandling via Unity-editoren. Denne forbindelse sikrer, at når en spiller giver input (som at flytte et joystick eller trykke på piletasterne), udløser den tilsvarende handling det ønskede script funktion.
Konklusion
Det nye inputsystem i Unity er en kraftfuld og nødvendig udvikling, der passer til behovene for moderne spiludvikling. Det tilbyder alsidighed, præcision og brugertilpasning, hvilket gør spillet interactions mere engagerende og responsivt.