Ogni gioco ha bisogno di ricevere input dagli utenti affinché i giocatori possano interagire e visualizzare il proprio ambiente. Roblox supporta quasi tutte le forme di input, inclusi mouse/tastiera, touch, gamepad e VR.
Input multipiattaforma
Roblox è intrinsecamente multipiattaforma, poiché i giocatori possono scoprire e unirsi ai giochi sul loro telefono o tablet, per poi continuare dove avevano lasciato su PC o console. L'input è particolarmente importante come parte del tuo piano di sviluppo multipiattaforma.
Per semplificare questo processo, Roblox fornisce il Sistema di Azioni Input per definire azioni come "salta", "corri" o "spara" e impostare bindings per più input hardware per eseguire quelle azioni. Questo ti libera dal dover pensare a tutti gli aspetti tecnici degli input hardware e ti consente di definire semplicemente quali input eseguono quali azioni.

Rilevamento del tipo di input
Nello sviluppo multipiattaforma, è importante determinare e rispondere al tipo di input principale che un giocatore sta utilizzando, normalmente per garantire che gli elementi UI come i pulsanti e i menu sullo schermo funzionino elegantemente su diversi dispositivi.
Ad esempio, un dispositivo abilitato al touch presume che il touch sia l'input predefinito e che potrebbero apparire pulsanti touch per le azioni, ma se un giocatore collega una tastiera/mouse o un gamepad bluetooth aggiuntivi, puoi presumere che voglia passare a quello come tipo di input principale e utilizzare eventualmente il touch come input di riserva per l'interfaccia utente sullo schermo. La proprietà di sola lettura UserInputService.PreferredInput è un modo conveniente per testare e adattarsi a più tipi di input su più tipologie di dispositivi, basandosi sul comportamento anticipato del giocatore.
Il valore di PreferredInput cambia in base agli input dei dispositivi integrati e all'interazione più recente del giocatore con un gamepad o una tastiera/mouse connessi. Alcuni esempi includono:
| Scenario del mondo reale | PreferredInput |
|---|---|
| Il giocatore sta utilizzando un telefono senza altri dispositivi di input connessi; nessuna possibilità di cambiamento del tipo di input. | Touch |
| Il giocatore sta utilizzando un dispositivo mobile con una tastiera e un mouse bluetooth connessi, ma non è connesso alcun gamepad. | KeyboardAndMouse |
| Il giocatore sta utilizzando un tablet con un gamepad bluetooth connesso, ma non è connessa alcuna tastiera o mouse. | Gamepad |
| Il giocatore è su un Xbox o PlayStation con una tastiera e un mouse bluetooth connessi e ha interagito più di recente con la tastiera o il mouse. | KeyboardAndMouse |
| Il giocatore è su un PC Windows o Mac con un gamepad connesso e ha interagito più di recente con il gamepad. | Gamepad |
Il seguente LocalScript è un modello per rilevare inizialmente l'input preferito e rispondere ai cambiamenti durante il gioco.
Rilevamento PreferredInput
local UserInputService = game:GetService("UserInputService")
local function preferredInputChanged()
local preferredInput = UserInputService.PreferredInput
if preferredInput == Enum.PreferredInput.Touch then
-- Il giocatore è su un dispositivo abilitato al touch senza altri tipi di input disponibili/connessi
print("Touch")
elseif preferredInput == Enum.PreferredInput.Gamepad then
-- Il giocatore ha collegato o interagito più recentemente con un gamepad
print("Gamepad")
elseif preferredInput == Enum.PreferredInput.KeyboardAndMouse then
-- Il giocatore ha collegato o interagito più recentemente con una tastiera o un mouse
print("KeyboardAndMouse")
end
end
preferredInputChanged()
UserInputService:GetPropertyChangedSignal("PreferredInput"):Connect(function()
preferredInputChanged()
end)
Binding predefiniti
Roblox fornisce binding di input predefiniti per movimento, controllo della fotocamera e interazione di base con l'ambiente — I giocatori di Roblox sono familiari con questi controlli, quindi dovresti sovrascriverli solo in casi specifici. Nota anche che gli input riservati non possono essere sovrascritti e funzioneranno sempre con il loro scopo previsto.
| Azioni | Mouse/Tastiera | Gamepad | Touch |
|---|---|---|---|
| Apri menu Roblox | Esc | Start pulsante (ButtonStart) | N/A |
| Console Sviluppatore | F9 | N/A | N/A |
| Modalità a schermo intero (Windows) Mostra desktop (Mac) | F11 | N/A | N/A |
| Registra video (Windows) | F12 | N/A | N/A |
| Fai uno screenshot | PrintScreen | N/A | N/A |