Accessibilità è la pratica di progettare prodotti e servizi per essere utilizzabili da persone con disabilità. Statistiche recenti indicano che oltre il 26% delle persone ha qualche tipo di disabilità, quindi rendere accessibile il tuo gioco Roblox può aiutarti a raggiungere un pubblico più ampio.
Dimensione del testo
I giocatori possono avere difficoltà a leggere il testo di piccole dimensioni. Confronta il seguente menu del negozio in-game con un effetto sfocato applicato, simulando come potrebbe apparire a qualcuno con visione compromessa.

Se aumenti la dimensione delle etichette di font più piccole, sarà più chiaro per la maggior parte dei giocatori.

Contrasto dei colori
I giocatori potrebbero trovare difficile leggere il testo chiaro su uno sfondo chiaro, o il testo scuro su uno sfondo scuro. Per migliorare l'accessibilità, si consiglia di scegliere colori del testo e dello sfondo con un contrasto di colore sufficiente.


Non dipendenza dal colore
Oltre il 5% delle persone nel mondo ha qualche forma di daltonismo. Sebbene sia raro che qualcuno veda solo in bianco e nero, immagina di visualizzare un gioco in scala di grigi:

Modificando l'immagine per usare diversi simboli insieme ai colori, più giocatori possono distinguere la differenza nel gameplay e in altri contesti:

Non dipendenza dal suono
Il suono è un'ottima aggiunta per giochi immersivi, ma i giocatori con problemi di udito o chiunque disattivi l'audio saranno confusi da eventi di gioco che vengono comunicati solo tramite suoni.
Considera la seguente scena in cui un telefono che squilla viene segnalato solo dal suono, e poi segnalato con sia suoni che aiuti visivi.
Preferenze del giocatore
Diverse impostazioni visive sono disponibili per i giocatori nei menù Impostazioni di Roblox e in-game, tra cui trasparenza preferita, dimensione del testo preferita e movimento ridotto. Per un'optimal accessibilità, la tua interfaccia utente dovrebbe adattarsi a ciascuna di esse.
Trasparenza preferita
L'impostazione Trasparenza Di Sfondo si mappa alla proprietà GuiService.PreferredTransparency. Un valore di 1 indica che il giocatore preferisce la trasparenza di sfondo predefinita, mentre un valore di 0 indica che il giocatore preferisce una trasparenza di sfondo completamente opaca (non trasparente) per una migliore leggibilità e contrasto.
Moltiplicare la BackgroundTransparency di un elemento UI per PreferredTransparency è il modo raccomandato per utilizzare questa impostazione; gli sfondi diventeranno più opachi man mano che PreferredTransparency si avvicina a 0.
Utilizzando il sistema di tagging, applica un tag di TransparentBack a tutti gli elementi UI con BackgroundTransparency come TextLabels o Frames.

Quattro elementi TextLabel con diversi livelli di BackgroundTransparency Incolla il seguente codice in uno LocalScript all'interno di StarterPlayerScripts.
Regolazione Dinamica per la Trasparenza Preferitalocal GuiService = game:GetService("GuiService")local CollectionService = game:GetService("CollectionService")local TAG = "TransparentBack"local transparentBackObjects = {}local function onInstanceAdded(object)if object.BackgroundTransparency thenlocal defaultTransparency = object.BackgroundTransparencytransparentBackObjects[object] = defaultTransparencyobject.BackgroundTransparency = defaultTransparency * GuiService.PreferredTransparencyendendlocal function onInstanceRemoved(object)transparentBackObjects[object] = nilend-- Memorizza le istanze iniziali contrassegnatefor _, object in CollectionService:GetTagged(TAG) doonInstanceAdded(object)end-- Rileva quando un'istanza contrassegnata viene aggiunta o rimossaCollectionService:GetInstanceAddedSignal(TAG):Connect(onInstanceAdded)CollectionService:GetInstanceRemovedSignal(TAG):Connect(onInstanceRemoved)-- Quando l'impostazione in-game viene cambiata, regola le istanze contrassegnateGuiService:GetPropertyChangedSignal("PreferredTransparency"):Connect(function()for object, defaultTransparency in transparentBackObjects doobject.BackgroundTransparency = defaultTransparency * GuiService.PreferredTransparencyendend)Testa il gioco, apri il menu Impostazioni e regola la Trasparenza di Sfondo. Gli elementi UI contrassegnati dovrebbero aggiornarsi tra la loro BackgroundTransparency predefinita e completamente opaca.

Dimensione del testo preferita
L'impostazione Dimensione Testo si mappa alla proprietà GuiService.PreferredTextSize che di default è impostata su Medium. I giocatori possono scegliere di aumentare la dimensione del testo attraverso il pipeline di rendering del font dell'engine a Large, Larger o Largest.
Quando lavori con elementi UI, nota i seguenti comportamenti:
Il testo che è vincolato a una dimensione minima e/o massima tramite un UITextSizeConstraint non si ridurrà al di sotto o si espanderà al di sopra della MinTextSize/MaxTextSize impostata, indipendentemente dall'impostazione della dimensione del testo del giocatore.
Quando TextScaled è abilitato per un TextLabel o un TextButton, il testo dell'elemento non sarà scalato dal valore di PreferredTextSize.
Gli elementi UI con AutomaticSize abilitato si restringeranno/cresceranno man mano che PreferredTextSize diminuisce/aumenta (i limiti dell'elemento si ridimensioneranno per adattarsi al testo ridimensionato).
Quando TextWrapped è abilitato per un TextLabel o un TextButton, il testo dell'elemento si wrapperà su linee aggiuntive man mano che PreferredTextSize aumenta, entro i limiti della dimensione assoluta dell'elemento.
I risultati restituiti da TextService:GetTextSize() e TextService:GetTextBoundsAsync() rispettano le modifiche relative a PreferredTextSize.
Movimento ridotto
L'interruttore Riduci Movimento si mappa alla proprietà GuiService.ReducedMotionEnabled. Un valore di true indica che il giocatore desidera che gli effetti di movimento attraverso le animazioni/tweens UI siano ridotti o completamente rimossi.
Un approccio base per rimuovere il movimento dai tween UI è impostare il parametro Time di un TweenInfo a 0 quando ReducedMotionEnabled è true, rendendo effettivamente l'oggetto UI scattare al suo bersaglio istantaneamente.
UI Tween Snap-to-Target per Movimento Ridottolocal GuiService = game:GetService("GuiService")local Players = game:GetService("Players")local TweenService = game:GetService("TweenService")local player = Players.LocalPlayerlocal playerGui = player.PlayerGuilocal menuUI = playerGui:WaitForChild("MenuUI")-- Usa un tempo di tween di 0.75 secondi a meno che il movimento ridotto non sia abilitatolocal TWEEN_TIME = if GuiService.ReducedMotionEnabled then 0 else 0.75local tweenInfo = TweenInfo.new(TWEEN_TIME, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)local tween = TweenService:Create(menuUI.SettingsFrame, tweenInfo, {Position = UDim2.fromScale(0.5, 0.5)})tween:Play()
In alternativa allo scatto istantaneo, puoi gestire ReducedMotionEnabled con logica più distintiva true/false. Ad esempio, il seguente LocalScript utilizza normalmente il tweening del movimento, ma passa al fade-in per i giocatori che abilitano il movimento ridotto, risultando in una transizione più elegante senza movimento posizionale.
Fallback to Fade Tween per Movimento Ridottolocal GuiService = game:GetService("GuiService")local Players = game:GetService("Players")local TweenService = game:GetService("TweenService")local player = Players.LocalPlayerlocal playerGui = player.PlayerGuilocal menuUI = playerGui:WaitForChild("MenuUI")-- Crea un gruppo di canvas per tweenare tutti i figli uniformementelocal canvasGroup = Instance.new("CanvasGroup")canvasGroup.Size = UDim2.fromScale(1, 1)canvasGroup.BackgroundTransparency = 1canvasGroup.Parent = menuUI-- Aggiungi figli al gruppo di canvasmenuUI.SettingsFrame.Parent = canvasGrouplocal tweenInfo = TweenInfo.new(0.75, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)local tween-- Usa il tween di fading per movimento ridotto, o un tween di movimento altrimentiif GuiService.ReducedMotionEnabled then-- Inizialmente imposta il gruppo di canvas a completamente trasparente (invisibile)canvasGroup.GroupTransparency = 1-- Fade in del gruppo canvastween = TweenService:Create(canvasGroup, tweenInfo, {GroupTransparency = 0})else-- Inizialmente imposta il gruppo di canvas fuori schermocanvasGroup.Position = UDim2.fromScale(0, -1)-- Muovi il gruppo di canvas in schermotween = TweenService:Create(canvasGroup, tweenInfo, {Position = UDim2.fromScale(0, 0)})endtween:Play()
Controlli del volume
Diversi suoni che suonano contemporaneamente possono essere travolgenti, distraenti o difficili da distinguere. Fornire agli utenti controlli del volume per diversi "gruppi" di audio come effetti sonori, musica e discorsi consente loro di personalizzare il proprio gioco e concentrarsi su ciò di cui hanno bisogno.
Considera il seguente esempio di un gioco molto rumoroso in cui l'utente può modificare separatamente i volumi della musica e degli effetti sonori.