可达性指南

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

可达性是设计产品和服务以使残疾人士可用的实践。最近的统计数据显示,超过26%的人有某种类型的残疾,因此使您的Roblox游戏可达可以帮助您触及更广泛的受众。

字体大小

玩家可能会发现阅读小字体困难。比较以下游戏内商店菜单与应用模糊效果,这模拟了视觉受损人群可能看到的效果。

用户界面中小字体的示例

如果您增加较小字体标签的大小,大多数玩家会更容易阅读。

用户界面中大字体的示例

颜色对比

玩家可能会发现白色文本在浅色背景上或黑色文本在深色背景上难以阅读。为了改善可达性,建议选择具有足够颜色对比的文本和背景颜色。

高对比度的示例用户界面元素
低对比度的示例用户界面元素

颜色非依赖

全球超过5%的人口有某种形式的色盲。虽然仅以黑白形式查看的情况少见,但想象一下在灰度色彩中观看游戏的情形:

完整颜色展示的示例用户界面

通过修改图像以使用不同的符号与颜色一起使用,更多玩家可以在游戏和其他上下文中分辨出差异:

完整颜色展示的示例用户界面

声音非依赖

声音是增强沉浸感的绝佳补充,但听力受损的玩家或任何将音量关闭的人会对仅通过声音传达的游戏事件感到困惑。

考虑以下场景,其中响铃电话仅通过声音传达,然后通过声音视觉辅助同时传达。

玩家偏好

在Roblox和游戏内的设置菜单中,玩家可以找到多种视觉设置,包括首选透明度首选文本大小减少运动。为了获得最佳可达性,您的用户界面应适应这些设置。

首选透明度

背景透明度设置映射到GuiService.PreferredTransparency属性。值为1表示玩家偏好默认背景透明度,而值为0表示玩家偏好完全不透明的背景透明度,以提高可读性和对比度。

将UI元素的BackgroundTransparencyPreferredTransparency相乘是使用此设置的推荐方法;当PreferredTransparency接近0时,背景将变得更加不透明。

  1. 使用标记系统,将TransparentBack标签应用于所有具有BackgroundTransparency的UI项,如TextLabelsFrames

    四个具有不同背景透明度级别的TextLabel元素
    四个TextLabel元素具有不同的BackgroundTransparency级别
  2. 将以下代码粘贴到LocalScript中,位于StarterPlayerScripts内。

    首选透明度的动态调整

    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
    -- 存储初始标记实例
    for _, object in CollectionService:GetTagged(TAG) do
    onInstanceAdded(object)
    end
    -- 监听标记实例被添加或移除
    CollectionService:GetInstanceAddedSignal(TAG):Connect(onInstanceAdded)
    CollectionService:GetInstanceRemovedSignal(TAG):Connect(onInstanceRemoved)
    -- 当游戏内设置更改时,调整标记实例
    GuiService:GetPropertyChangedSignal("PreferredTransparency"):Connect(function()
    for object, defaultTransparency in transparentBackObjects do
    object.BackgroundTransparency = defaultTransparency * GuiService.PreferredTransparency
    end
    end)
  3. 进行游戏测试,打开设置菜单,并调整背景透明度。标记的UI元素应更新为其默认BackgroundTransparency和完全不透明之间的状态。

首选文本大小

文本大小设置映射到GuiService.PreferredTextSize属性,默认为Medium。玩家可以选择通过引擎的字体渲染管道将文本大小增加到LargeLargerLargest

在处理UI元素时,请注意以下行为:

减少运动

减少运动切换映射到GuiService.ReducedMotionEnabled属性。值为true表示玩家希望通过UI 动画/缓动减少或完全移除运动效果。

移除UI缓动中的运动的基本方法是当ReducedMotionEnabledtrue时,将Time参数设置为0,有效地使UI对象瞬间达到目标。

减少运动时UI缓动瞬间到达目标

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")
-- 使用0.75秒的缓动时间,除非启用了减少运动
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()

除了瞬间到达,您还可以使用更明确的true/false逻辑处理ReducedMotionEnabled。例如,以下LocalScript默认使用运动缓动,但对于启用减少运动的玩家切换到淡入,从而实现更优雅的过渡而无需位置移动。

减少运动时使用淡入缓动

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")
-- 创建画布组以统一缓动所有子元素
local canvasGroup = Instance.new("CanvasGroup")
canvasGroup.Size = UDim2.fromScale(1, 1)
canvasGroup.BackgroundTransparency = 1
canvasGroup.Parent = menuUI
-- 将子元素添加到画布组
menuUI.SettingsFrame.Parent = canvasGroup
local tweenInfo = TweenInfo.new(0.75, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)
local tween
-- 使用淡入缓动以减少运动,或使用运动缓动
if GuiService.ReducedMotionEnabled then
-- 最初将画布组设置为完全透明(不可见)
canvasGroup.GroupTransparency = 1
-- 淡入画布组
tween = TweenService:Create(canvasGroup, tweenInfo, {GroupTransparency = 0})
else
-- 最初将画布组设置在屏幕外
canvasGroup.Position = UDim2.fromScale(0, -1)
-- 将画布组移动到屏幕上
tween = TweenService:Create(canvasGroup, tweenInfo, {Position = UDim2.fromScale(0, 0)})
end
tween:Play()

音量控制

同时播放的不同声音可能会让人感到不知所措,分散注意力或难以分辨。为用户提供不同“音频组”的音量控制,例如音效、音乐和语音,让他们能够自定义游戏并关注他们需要的内容。

考虑以下非常吵闹的游戏示例,用户能够分别调整音乐和音效的音量。

©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。