Overzicht van Unity's nieuwe invoersysteem

Het nieuwe invoersysteem in Unity biedt een bijgewerkte, flexibele en meer intuïtieve benadering voor het verwerken van invoer in games. Met dit systeem kunnen ontwikkelaars een verscheidenheid aan apparaten bedienen, van gamecontrollers tot VR-handsets, waardoor de gameplay dynamischer en meeslepender wordt.

1. Waarom het nieuwe systeem

Het traditionele invoersysteem in Unity was beperkt in zijn mogelijkheden en niet zo uitbreidbaar. Het Nieuwe invoersysteem biedt een uniforme API, die eerdere beperkingen aanpakt en geavanceerde functies biedt voor moderne game-ontwikkeling.

2. Opzetten

Om het nieuwe invoersysteem te kunnen gebruiken, moet het eerst worden geïnstalleerd vanuit Pakketbeheer in Unity. Eenmaal toegevoegd vergt de overstap van het oude systeem bepaalde aanpassingen in scripts en instellingen.

3. Belangrijkste kenmerken

  • Acties en bindingen: In plaats van rechtstreeks naar knoppen of sleutels te verwijzen, definiëren ontwikkelaars acties en koppelen ze die acties vervolgens aan specifieke sleutels of knoppen.
  • Variabiliteit van apparaten: Ondersteunt eenvoudig meerdere apparaten, van traditionele gamepads tot touchscreens en VR-handsets.
  • Spelerbesturing: Biedt een ingebouwd mechanisme voor het opnieuw verbinden van de besturing, waardoor spelers de besturing naar eigen voorkeur kunnen instellen.
  • Geavanceerde gebeurtenisafhandeling:Gebeurtenissen kunnen op verschillende manieren worden verwerkt, op basis van polling of callback, waardoor u meer controle krijgt.

4. Een invoeractie maken

Een invoeractie is een nieuw itemtype waarmee invoergedrag kan worden gedefinieerd zonder dat er scripts hoeven te worden geschreven. Eenmaal gemaakt, kan het in een script worden geplaatst, waardoor de gameplay rechtstreeks wordt gekoppeld aan de invoer van de speler.

5. Implementatie in scripting

  • Het nieuwe invoersysteem integreert naadloos met de Unity-scriptomgeving. In plaats van de oudere methoden 'Input.GetKey' of 'Input.GetAxis' gebruikt dit systeem 'acties' die binnen scripts kunnen worden aangeroepen. Bekijk het onderstaande voorbeeld:
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);
    }
}

Laten we het bovenstaande codevoorbeeld opsplitsen:

  • Naamruimten: De naamruimte 'UnityEngine.InputSystem' is essentieel om de nieuwe functionaliteiten te kunnen gebruiken.
  • 'moveInput': deze variabele slaat de invoerwaarden op, die gewoonlijk horizontale en verticale invoer vertegenwoordigen.
  • 'OnMove()': Gedefinieerd als een publieke functie, kan 'OnMove' direct gekoppeld worden aan een Invoeractie in de Unity Editor. De methode gebruikt 'InputAction.CallbackContext' om de invoerwaarden te lezen en deze toe te wijzen aan onze 'moveInput'-variabele.
  • 'Update()': Bij de methode 'Update' bepalen de opgeslagen invoerwaarden de bewegingsrichting. De invoer wordt vertaald in een 3D-vector voor karakterbewegingen, waarbij rekening wordt gehouden met de gedefinieerde snelheid en de Unity 'Time.deltaTime' voor frame-onafhankelijke beweging.

Om dit script te laten werken, is het belangrijk om de 'OnMove' methode te koppelen aan een Invoeractie via de Unity Editor. Deze verbinding zorgt ervoor dat wanneer een speler invoer geeft (zoals het verplaatsen van een joystick of het indrukken van de pijltjestoetsen), de bijbehorende actie het gewenste script function activeert.

Conclusie

Het nieuwe invoersysteem in Unity is een krachtige en noodzakelijke evolutie, die aansluit bij de behoeften van moderne game-ontwikkeling. Het biedt veelzijdigheid, precisie en gebruikersaanpassing, waardoor interacties games boeiender en responsiever worden.