Oversikt over Unitys nye inndatasystem

Det nye inngangssystemet i Unity gir en oppdatert, fleksibel og mer intuitiv tilnærming til håndtering av innganger i spill. Med dette systemet kan utviklere betjene en rekke enheter, fra spillkontrollere til VR-telefoner, noe som gjør spillingen mer dynamisk og oppslukende.

1. Hvorfor det nye systemet

Det tradisjonelle inngangssystemet i Unity var begrenset i sine muligheter og ikke så utvidbart. New Input System tilbyr et enhetlig API, som adresserer tidligere begrensninger og gir avanserte funksjoner for moderne spillutvikling.

2. Setter opp

For å begynne å bruke det nye inndatasystemet, må det først installeres fra Pakkebehandlingen i Unity. Når den er lagt til, krever overgangen fra det gamle systemet visse justeringer i skript og innstillinger.

3. Nøkkelegenskaper

  • Handlinger og bindinger: I stedet for å referere direkte til knapper eller taster, definerer utviklere handlinger, og binder deretter disse handlingene til bestemte taster eller knapper.
  • Enhetsvariabilitet: Støtter enkelt flere enheter, fra tradisjonelle gamepads til berøringsskjermer og VR-telefoner.
  • Spillerkontroller: Gir en innebygd mekanisme for rebindingskontroller, slik at spillere kan sette opp kontroller etter ønske.
  • Avansert hendelseshåndtering:Hendelser kan behandles på forskjellige måter, enten det er pollingbasert eller tilbakeringingsbasert, noe som gir mer kontroll.

4. Opprette en inndatahandling

En inndatahandling er en ny aktivatype som tillater definisjon av inputatferd uten å måtte skrive skript. Når den er opprettet, kan den legges ned i et skript, og koble spillingen direkte til spillerinnganger.

5. Implementering i scripting

  • Det nye inndatasystemet integreres sømløst med Unity-skriptmiljøet. I stedet for de eldre metodene 'Input.GetKey' eller 'Input.GetAxis', bruker dette systemet "handlinger" som kan kalles i skript. Sjekk eksempelet 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);
    }
}

La oss bryte ned kodeeksemplet ovenfor:

  • Navneområder: Navneområdet 'UnityEngine.InputSystem' er avgjørende for å bruke de nye funksjonene.
  • 'moveInput': Denne variabelen lagrer inngangsverdiene, som vanligvis representerer horisontale og vertikale innganger.
  • 'OnMove()': Definert som en offentlig funksjon, 'OnMove' kan kobles direkte til en inngangshandling i Unity Editor. Metoden bruker 'InputAction.CallbackContext' for å lese inngangsverdiene og tilordne dem til vår 'moveInput' variabel.
  • 'Update()': I 'Update'-metoden bestemmer de lagrede inngangsverdiene bevegelsesretningen. Inndataene er oversatt til en 3D-vektor for tegnbevegelse, med hensyn til den definerte hastigheten og Unity 'Time.deltaTime' for bildeuavhengig bevegelse.

For å få dette skriptet til å fungere, er det viktig å koble 'OnMove'-metoden til en Input Action via Unity Editor. Denne tilkoblingen sikrer at når en spiller gir input (som å flytte en joystick eller trykke på piltastene), utløser den tilsvarende handlingen det ønskede skriptet funksjon.

Konklusjon

Det nye inngangssystemet i Unity er en kraftig og nødvendig utvikling, som samsvarer med behovene til moderne spillutvikling. Den tilbyr allsidighet, presisjon og brukertilpasning, noe som gjør spillet interactions mer engasjerende og responsivt.

Foreslåtte artikler
Fiskespillguide for Unity
Oppdag porten til grenseløs kreativitet med enhet
Lage 2D-animasjoner i Unity
Lag et enkelt plattformspill i Unity
Kort historie om Unity Engine
5 essensielle tips for nybegynnere spillutviklere
Lag et Poppy Playtime-inspirert spill i Unity