Panoramica del nuovo sistema di input di Unity

Il nuovo sistema di input in Unity fornisce un approccio aggiornato, flessibile e più intuitivo alla gestione degli input nei giochi. Con questo sistema, gli sviluppatori possono soddisfare una varietà di dispositivi, dai controller di gioco ai dispositivi VR, rendendo il gameplay più dinamico e coinvolgente.

1. Perché il nuovo sistema

Il tradizionale sistema di input in Unity era limitato nelle sue capacità e non altrettanto estensibile. Il Nuovo sistema di input offre un'API unificata, risolvendo le limitazioni precedenti e fornendo funzionalità avanzate per lo sviluppo di giochi moderni.

2. Impostare

Per iniziare a utilizzare il nuovo sistema di input, è necessario prima installarlo dal Gestore pacchetti in Unity. Una volta aggiunto, il passaggio dal vecchio sistema richiede alcuni aggiustamenti negli script e nelle impostazioni.

3. Caratteristiche principali

  • Azioni e associazioni: invece di fare riferimento direttamente a pulsanti o tasti, gli sviluppatori definiscono azioni e quindi associano tali azioni a tasti o pulsanti specifici.
  • Variabilità del dispositivo: supporta facilmente più dispositivi, dai gamepad tradizionali ai touchscreen e ai dispositivi VR.
  • Controlli del giocatore: Fornisce un meccanismo integrato per riassociare i controlli, consentendo ai giocatori di impostare i controlli come preferiscono.
  • Gestione avanzata degli eventi: gli eventi possono essere elaborati in vari modi, sia basati su polling che basati su callback, garantendo maggiore controllo.

4. Creazione di un'azione di input

Un'azione di input è un nuovo tipo di risorsa che consente la definizione di comportamenti di input senza dover scrivere script. Una volta creato, può essere inserito in uno script, collegando il gameplay direttamente agli input del giocatore.

5. Implementazione nello scripting

  • Il nuovo sistema di input si integra perfettamente con l'ambiente di scripting Unity. Invece dei vecchi metodi 'Input.GetKey' o 'Input.GetAxis', questo sistema utilizza "azioni" che possono essere richiamate all'interno degli script. Controlla l'esempio qui sotto:
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);
    }
}

Analizziamo l'esempio di codice fornito sopra:

  • Spazi dei nomi: lo spazio dei nomi 'UnityEngine.InputSystem' è essenziale per utilizzare le nuove funzionalità.
  • 'moveInput': questa variabile memorizza i valori di input, che comunemente rappresentano input orizzontali e verticali.
  • 'OnMove()': Definito come funzione pubblica, 'OnMove' può essere collegato direttamente a un'azione di input nell'editor Unity. Il metodo utilizza 'InputAction.CallbackContext' per leggere i valori di input e assegnarli alla nostra variabile 'moveInput'.
  • 'Update()': Nel metodo 'Update' i valori di input memorizzati determinano la direzione del movimento. L'input viene tradotto in un vettore 3D per il movimento del personaggio, tenendo conto della velocità definita e di Unity 'Time.deltaTime' per il movimento indipendente dal frame.

Per far funzionare questo script, è importante collegare il metodo 'OnMove' a un'azione di input tramite l'editor Unity. Questa connessione garantisce che quando un giocatore fornisce input (come spostare un joystick o premere i tasti freccia), l'azione corrispondente attiva la funzione dello script desiderato.

Conclusione

Il nuovo sistema di input in Unity è un'evoluzione potente e necessaria, in linea con le esigenze dello sviluppo di giochi moderni. Offre versatilità, precisione e personalizzazione da parte dell'utente, rendendo le interazioni di gioco più coinvolgenti e reattive.