Directrices de accesibilidad

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Accesibilidad es la práctica de diseñar productos y servicios para que sean utilizables por personas con discapacidad. Estadísticas recientes indican que más del 26% de las personas tienen algún tipo de discapacidad, por lo que hacer que tu juego de Roblox sea accesible puede ayudarte a alcanzar una audiencia más amplia.

Tamaño del texto

Los jugadores pueden encontrar difícil leer texto pequeño. Compara el siguiente menú de tienda en el juego con un desenfoque aplicado, simulando cómo podría parecerle a alguien con visión reducida.

Ejemplo de texto pequeño en la interfaz de usuario

Si aumentas el tamaño de las etiquetas de fuente más pequeñas, será más claro para la mayoría de los jugadores.

Ejemplo de texto más grande en la interfaz de usuario

Contraste de color

Los jugadores pueden encontrar difícil leer texto claro sobre un fondo claro, o texto oscuro sobre un fondo oscuro. Para mejorar la accesibilidad, se recomienda que elijas colores de texto y fondo con un contraste de color suficiente.

Ejemplo de elementos de interfaz de usuario con alto contraste
Ejemplo de elementos de interfaz de usuario con bajo contraste

No dependencia del color

Más del 5% de las personas en el mundo tienen alguna forma de daltonismo. Aunque es raro que alguien vea solo en blanco y negro, imagina ver un juego en escala de grises:

Ejemplo de interfaz de usuario mostrada en color completo

Al modificar la imagen para usar diferentes símbolos junto a los colores, más jugadores pueden distinguir la diferencia en la jugabilidad y en otros contextos:

Ejemplo de interfaz de usuario mostrada en color completo

No dependencia del sonido

El sonido es una excelente adición para juegos inmersivos, pero los jugadores con discapacidad auditiva o cualquiera que apague su volumen se sentirán confundidos por eventos dentro del juego que se transmiten solo mediante sonido.

Considera la siguiente escena donde un teléfono que suena se señala solo con sonido, y luego se señala con sonido y ayudas visuales.

Preferencias del jugador

Varios ajustes visuales están disponibles para los jugadores desde los menús de Configuración de Roblox y del juego, incluyendo transparencia preferida, tamaño de texto preferido y movimiento reducido. Para una accesibilidad óptima, tu interfaz de usuario debe acomodar cada una de ellas.

Transparencia preferida

La configuración de Transparencia de Fondo corresponde a la propiedad GuiService.PreferredTransparency. Un valor de 1 indica que el jugador prefiere la transparencia de fondo predeterminada, mientras que un valor de 0 indica que el jugador prefiere una transparencia de fondo completamente opaca (no transparente) para mejorar la legibilidad y el contraste.

Multiplicar la BackgroundTransparency de un elemento de UI por PreferredTransparency es la forma recomendada de usar esta configuración; los fondos se volverán más opacos a medida que PreferredTransparency se acerque a 0.

  1. Usando el sistema de etiquetado, aplica una etiqueta de TransparentBack a todos los elementos de UI con BackgroundTransparency como TextLabels o Frames.

    Cuatro elementos TextLabel con diferentes niveles de BackgroundTransparency
    Cuatro elementos TextLabel con diferentes niveles de BackgroundTransparency
  2. Pega el siguiente código en un LocalScript dentro de StarterPlayerScripts.

    Ajuste Dinámico para la Transparencia Preferida

    local GuiService = game:GetService("GuiService")
    local CollectionService = game:GetService("CollectionService")
    local TAG = "TransparentBack"
    local transparentBackObjects = {}
    local function onInstanceAdded(object)
    if object.BackgroundTransparency then
    local defaultTransparency = object.BackgroundTransparency
    transparentBackObjects[object] = defaultTransparency
    object.BackgroundTransparency = defaultTransparency * GuiService.PreferredTransparency
    end
    end
    local function onInstanceRemoved(object)
    transparentBackObjects[object] = nil
    end
    -- Almacenar las instancias etiquetadas iniciales
    for _, object in CollectionService:GetTagged(TAG) do
    onInstanceAdded(object)
    end
    -- Detectar cuando se añade o se quita una instancia etiquetada
    CollectionService:GetInstanceAddedSignal(TAG):Connect(onInstanceAdded)
    CollectionService:GetInstanceRemovedSignal(TAG):Connect(onInstanceRemoved)
    -- Cuando se cambie la configuración en el juego, ajustar las instancias etiquetadas
    GuiService:GetPropertyChangedSignal("PreferredTransparency"):Connect(function()
    for object, defaultTransparency in transparentBackObjects do
    object.BackgroundTransparency = defaultTransparency * GuiService.PreferredTransparency
    end
    end)
  3. Prueba el juego, abre el menú de Configuración y ajusta la Transparencia de Fondo. Los elementos de UI etiquetados deben actualizarse entre su BackgroundTransparency predeterminado y completamente opaco.

Tamaño de texto preferido

La configuración de Tamaño de Texto corresponde a la propiedad GuiService.PreferredTextSize que tiene como valor predeterminado Medium. Los jugadores pueden optar por aumentar el tamaño del texto a través del pipeline de renderizado de fuentes del motor a Large, Larger, o Largest.

Al trabajar con elementos de UI, ten en cuenta los siguientes comportamientos:

Movimiento reducido

El toggle de Reducir Movimiento corresponde a la propiedad GuiService.ReducedMotionEnabled. Un valor de true indica que el jugador desea que los efectos de movimiento a través de animaciones/tweens de UI sean reducidos o eliminados por completo.

Un enfoque básico para eliminar movimiento de los tweens de la UI es establecer el parámetro Time de un TweenInfo en 0 cuando ReducedMotionEnabled es true, haciendo que el objeto de UI salte instantáneamente a su objetivo.

Ajuste Instantáneo de UI para Movimiento Reducido

local GuiService = game:GetService("GuiService")
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local menuUI = playerGui:WaitForChild("MenuUI")
-- Usar un tiempo de tween de 0.75 segundos a menos que el movimiento reducido esté habilitado
local TWEEN_TIME = if GuiService.ReducedMotionEnabled then 0 else 0.75
local 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()

Alternativamente al salto instantáneo, puedes manejar ReducedMotionEnabled con una lógica más distinta de true/false. Por ejemplo, el siguiente LocalScript utiliza tweening de movimiento por defecto, pero cambia a un desvanecimiento para jugadores que habilitan movimiento reducido, resultando en una transición más elegante sin movimiento posicional.

Devolución a Tween de Desvanecimiento para Movimiento Reducido

local GuiService = game:GetService("GuiService")
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local menuUI = playerGui:WaitForChild("MenuUI")
-- Crear un grupo de lienzo para tweenear todos los hijos uniformemente
local canvasGroup = Instance.new("CanvasGroup")
canvasGroup.Size = UDim2.fromScale(1, 1)
canvasGroup.BackgroundTransparency = 1
canvasGroup.Parent = menuUI
-- Agregar hijos al grupo de lienzo
menuUI.SettingsFrame.Parent = canvasGroup
local tweenInfo = TweenInfo.new(0.75, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)
local tween
-- Usar tween de desvanecimiento para movimiento reducido, o un tween de movimiento de lo contrario
if GuiService.ReducedMotionEnabled then
-- Inicialmente establecer el grupo de lienzo como completamente transparente (invisible)
canvasGroup.GroupTransparency = 1
-- Desvanecer el grupo de lienzo
tween = TweenService:Create(canvasGroup, tweenInfo, {GroupTransparency = 0})
else
-- Inicialmente establecer el grupo de lienzo fuera de la pantalla
canvasGroup.Position = UDim2.fromScale(0, -1)
-- Mover el grupo de lienzo a la pantalla
tween = TweenService:Create(canvasGroup, tweenInfo, {Position = UDim2.fromScale(0, 0)})
end
tween:Play()

Controles de volumen

Diferentes sonidos que se reproducen al mismo tiempo pueden ser abrumadores, distraer o ser difíciles de distinguir. Proporcionar a los usuarios controles de volumen para diferentes "grupos" de audio como efectos de sonido, música y voz les permite personalizar su juego y concentrarse en lo que necesitan.

Considera el siguiente ejemplo de un juego muy ruidoso donde el usuario puede modificar los volúmenes de música y efectos de sonido por separado.

©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.