無障礙指南

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

無障礙性 是設計產品和服務使其可供殘疾人士使用的實踐。最近的統計顯示,超過 26% 的人有某種形式的殘疾,因此使你的 Roblox 遊戲可達將有助於你觸及更廣泛的受眾。

文字大小

玩家可能會發現閱讀小字體非常困難。將以下遊戲內商店菜單與模糊效果進行比較,模擬視力受損的人可能看到的樣子。

用戶界面上小字的示例

如果你增大較小字體標籤的大小,大多數玩家會更清晰地看到。

用戶界面上大字的示例

顏色對比

玩家可能會發現淺色文本在淺色背景上或深色文本在深色背景上難以閱讀。為了改善無障礙性,建議選擇具備足夠顏色對比的文本和背景顏色。

高對比度的 UI 元素示例
低對比度的 UI 元素示例

顏色非依賴

全球超過 5% 的人有某種形式的色盲。雖然看到只有黑白的人很少,但想像一下以灰階觀看遊戲:

完整顏色顯示的用戶界面示例

通過在顏色旁邊修改圖像以使用不同的符號,更多玩家可以在遊戲和其他情境中區分差異:

完整顏色顯示的用戶界面示例

聲音非依賴

聲音是沉浸式遊戲的極佳補充,但聽力障礙的玩家或任何關閉音量的人將對僅通過聲音傳達的遊戲內事件感到困惑。

考慮以下場景,其中響鈴的電話僅通過聲音發出信號,然後通過聲音視覺輔助信號。

玩家偏好

玩家可以從 Roblox 及遊戲內的 設置 菜單中獲得各種視覺設置,包括 首選透明度首選文本大小減少動態效果。為了最佳無障礙性,你的 用戶界面 應該考慮到這一點。

首選透明度

背景透明度 設定映射到 GuiService.PreferredTransparency 屬性。值為 1 表示玩家偏好默認背景透明度,而值為 0 表示玩家對完全不透明(非透明)背景透明度的偏好,以改善可讀性和對比度。

將 UI 元素的 BackgroundTransparency 乘以 PreferredTransparency 是使用此設置的建議方法;當 PreferredTransparency 接近 0 時,背景將變得更加不透明。

  1. 使用 標記 系統,對所有 UI 項目(如 TextLabelsFrames)應用標記 TransparentBack,這些項目的 BackgroundTransparency

    四個具有不同 BackgroundTransparency 水準的 TextLabel 元素
    四個具有不同 BackgroundTransparency 水準的 TextLabel 元素
  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 緩動中刪除動態的一種基本方法是將 Time 參數設置為 0,當 ReducedMotionEnabledtrue 時,這樣將使 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 是我們在美國及其他國家地區的部分註冊與未註冊商標。