無障礙性 是設計產品和服務使其可供殘疾人士使用的實踐。最近的統計顯示,超過 26% 的人有某種形式的殘疾,因此使你的 Roblox 遊戲可達將有助於你觸及更廣泛的受眾。
文字大小
玩家可能會發現閱讀小字體非常困難。將以下遊戲內商店菜單與模糊效果進行比較,模擬視力受損的人可能看到的樣子。

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

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


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

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

聲音非依賴
聲音是沉浸式遊戲的極佳補充,但聽力障礙的玩家或任何關閉音量的人將對僅通過聲音傳達的遊戲內事件感到困惑。
考慮以下場景,其中響鈴的電話僅通過聲音發出信號,然後通過聲音和視覺輔助信號。
玩家偏好
玩家可以從 Roblox 及遊戲內的 設置 菜單中獲得各種視覺設置,包括 首選透明度、首選文本大小 和 減少動態效果。為了最佳無障礙性,你的 用戶界面 應該考慮到這一點。
首選透明度
背景透明度 設定映射到 GuiService.PreferredTransparency 屬性。值為 1 表示玩家偏好默認背景透明度,而值為 0 表示玩家對完全不透明(非透明)背景透明度的偏好,以改善可讀性和對比度。
將 UI 元素的 BackgroundTransparency 乘以 PreferredTransparency 是使用此設置的建議方法;當 PreferredTransparency 接近 0 時,背景將變得更加不透明。
使用 標記 系統,對所有 UI 項目(如 TextLabels 或 Frames)應用標記 TransparentBack,這些項目的 BackgroundTransparency。

四個具有不同 BackgroundTransparency 水準的 TextLabel 元素 將以下代碼粘貼到 LocalScript 中的 StarterPlayerScripts。
首選透明度的動態調整local 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-- 存儲初始標記實例for _, object in CollectionService:GetTagged(TAG) doonInstanceAdded(object)end-- 偵測標記實例何時被添加或移除CollectionService:GetInstanceAddedSignal(TAG):Connect(onInstanceAdded)CollectionService:GetInstanceRemovedSignal(TAG):Connect(onInstanceRemoved)-- 當遊戲內設置發生變化時,調整標記實例GuiService:GetPropertyChangedSignal("PreferredTransparency"):Connect(function()for object, defaultTransparency in transparentBackObjects doobject.BackgroundTransparency = defaultTransparency * GuiService.PreferredTransparencyendend)
首選文本大小
文本大小 設定映射到 GuiService.PreferredTextSize 屬性,默認為 Medium。玩家可以選擇通過引擎的字體渲染管道將文本大小增加到 Large、Larger 或 Largest。
在處理 UI 元素時,請注意以下行為:
透過 UITextSizeConstraint 限制的文本大小(最小和/或最大)將不會小於或超過設置的 MinTextSize/MaxTextSize,無論玩家的文本大小設置如何。
當 TextScaled 在 TextLabel 或 TextButton 啟用時,元素的文本將不會由 PreferredTextSize 值縮放。
啟用 AutomaticSize 的 UI 元素將隨著 PreferredTextSize 的減少/增加而縮小/增大(元素邊界將調整以適應調整大小的文本)。
當 TextWrapped 在 TextLabel 或 TextButton 上啟用時,元素的文本將隨著 PreferredTextSize 的增加而換行,受限於元素的絕對大小。
TextService:GetTextSize() 和 TextService:GetTextBoundsAsync() 返回的結果會尊重與 PreferredTextSize 相關的更改。
減少動態效果
減少動態效果 切換按鈕映射到 GuiService.ReducedMotionEnabled 屬性。值為 true 表示玩家希望通過 UI 動畫/緩動 來減少或完全移除動態效果。
從 UI 緩動中刪除動態的一種基本方法是將 Time 參數設置為 0,當 ReducedMotionEnabled 為 true 時,這樣將使 UI 物件立即跳到目標位置。
減少動態的 UI 緩動瞬間跳轉至目標local 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")-- 除非啟用了減少動態,否則使用 0.75 秒的緩動時間local 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()
另外,你可以用更明確的 true/false 邏輯處理 ReducedMotionEnabled,例如,以下的 LocalScript 默認使用動態緩動,但對於啟用減少動態的玩家切換到淡入,使得過渡更加優雅而不需進行位置移動。
減少動態的淡入緩動local 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")-- 創建一個畫布組以統一緩動所有子項local canvasGroup = Instance.new("CanvasGroup")canvasGroup.Size = UDim2.fromScale(1, 1)canvasGroup.BackgroundTransparency = 1canvasGroup.Parent = menuUI-- 將子項添加到畫布組中menuUI.SettingsFrame.Parent = canvasGrouplocal 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)})endtween:Play()
音量控制
同時播放的不同聲音可能會讓人感到不知所措、分心或難以區分。為用戶提供針對不同音頻“組”(如音效、音樂和語音)的音量控制,讓他們自定義遊戲並專注於他們需要的內容。
考慮以下非常嘈雜的遊戲示例,其中用戶能夠分別修改音樂和音效的音量。
