Hướng dẫn truy cập

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Truy cập là thực hành thiết kế sản phẩm và dịch vụ để có thể sử dụng cho người khuyết tật. Các thống kê gần đây chỉ ra rằng hơn 26% người dân có một loại khuyết tật nào đó, vì vậy việc làm cho trò chơi Roblox của bạn có thể truy cập được sẽ giúp bạn tiếp cận được nhiều đối tượng hơn.

Kích thước văn bản

Người chơi có thể gặp khó khăn trong việc đọc các văn bản nhỏ. So sánh menu cửa hàng trong game dưới đây với hiệu ứng mờ, mô phỏng những gì nó có thể trông như thế nào đối với những người có thị lực kém.

Ví dụ về văn bản nhỏ trên giao diện người dùng

Nếu bạn tăng kích thước của các nhãn văn bản nhỏ hơn, nó sẽ rõ ràng hơn đối với hầu hết người chơi.

Ví dụ về văn bản lớn hơn trên giao diện người dùng

Độ tương phản màu sắc

Người chơi có thể gặp khó khăn trong việc đọc văn bản sáng trên nền sáng, hoặc văn bản tối trên nền tối. Để cải thiện khả năng truy cập, bạn nên chọn màu văn bản và màu nền có độ tương phản màu sắc đủ cao.

Ví dụ về các yếu tố giao diện người dùng có độ tương phản cao
Ví dụ về các yếu tố giao diện người dùng có độ tương phản thấp

Không phụ thuộc vào màu sắc

Hơn 5% dân số thế giới có một dạng mù màu nào đó. Mặc dù hiếm khi có người chỉ nhìn thấy đen và trắng, hãy tưởng tượng việc xem một trò chơi chỉ với gam màu xám:

Ví dụ giao diện người dùng hiển thị đầy đủ màu sắc

Bằng cách chỉnh sửa hình ảnh để sử dụng các biểu tượng khác nhau bên cạnh các màu sắc, nhiều người chơi hơn có thể phân biệt được sự khác nhau trong gameplay và các ngữ cảnh khác:

Ví dụ giao diện người dùng hiển thị đầy đủ màu sắc

Không phụ thuộc vào âm thanh

Âm thanh là một bổ sung tuyệt vời cho các trò chơi hấp dẫn, nhưng người chơi khiếm thính hoặc bất kỳ ai tắt âm thanh sẽ bị nhầm lẫn bởi các sự kiện trong game chỉ được truyền đạt bằng âm thanh.

Hãy xem cảnh sau đây, trong đó một chiếc điện thoại đang reo chỉ được báo hiệu bằng âm thanh, và sau đó được báo hiệu bằng cả âm thanh các trợ giúp hình ảnh.

Sở thích của người chơi

Các cài đặt hình ảnh khác nhau có sẵn cho người chơi từ Roblox và trong menu Cài đặt trong game, bao gồm độ trong suốt ưa thích, kích thước văn bản ưa thích, và giảm chuyển động. Để đạt được khả năng truy cập tối ưu, giao diện người dùng của bạn nên phù hợp với từng cài đặt này.

Độ trong suốt ưa thích

Cài đặt Độ Trong Suốt Nền tương ứng với thuộc tính GuiService.PreferredTransparency. Giá trị 1 cho biết người chơi ưa thích độ trong suốt nền mặc định, trong khi giá trị 0 cho biết người chơi ưa thích nền hoàn toàn không trong suốt để cải thiện khả năng đọc và độ tương phản.

Nhân giá trị BackgroundTransparency của một yếu tố UI với giá trị PreferredTransparency là cách khuyến nghị để sử dụng cài đặt này; nền sẽ trở nên ít trong suốt hơn khi PreferredTransparency tiến gần tới 0.

  1. Sử dụng hệ thống gán thẻ, áp dụng thẻ TransparentBack cho tất cả các mục UI có BackgroundTransparency như TextLabels hoặc Frames.

    Bốn yếu tố TextLabel với các mức độ BackgroundTransparency khác nhau
    Bốn yếu tố TextLabel với các mức độ BackgroundTransparency khác nhau
  2. Dán đoạn mã sau vào một LocalScript trong StarterPlayerScripts.

    Điều Chỉnh Năng Động cho Độ Trong Suốt Ưa Thích

    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
    -- Lưu trữ các đối tượng đã gán thẻ ban đầu
    for _, object in CollectionService:GetTagged(TAG) do
    onInstanceAdded(object)
    end
    -- Phát hiện khi đối tượng gán thẻ được thêm hoặc xóa
    CollectionService:GetInstanceAddedSignal(TAG):Connect(onInstanceAdded)
    CollectionService:GetInstanceRemovedSignal(TAG):Connect(onInstanceRemoved)
    -- Khi cài đặt trong game thay đổi, điều chỉnh các đối tượng đã gán thẻ
    GuiService:GetPropertyChangedSignal("PreferredTransparency"):Connect(function()
    for object, defaultTransparency in transparentBackObjects do
    object.BackgroundTransparency = defaultTransparency * GuiService.PreferredTransparency
    end
    end)
  3. Chơi thử trò chơi, mở menu Cài đặt, và điều chỉnh Độ Trong Suốt Nền. Các yếu tố UI được gán thẻ nên cập nhật giữa độ trong suốt nền mặc định BackgroundTransparency và độ trong suốt hoàn toàn.

Kích thước văn bản ưa thích

Cài đặt Kích Thước Văn Bản tương ứng với thuộc tính GuiService.PreferredTextSize có mặc định là Medium. Người chơi có thể chọn tăng kích thước văn bản thông qua quy trình kết xuất phông chữ của engine lên Large, Larger, hoặc Largest.

Khi làm việc với các yếu tố UI, hãy lưu ý các hành vi sau:

Giảm chuyển động

Cài đặt Giảm Chuyển Động tương ứng với thuộc tính GuiService.ReducedMotionEnabled. Giá trị true cho biết người chơi muốn những hiệu ứng chuyển động qua hoạt ảnh/tween UI được giảm hoặc hoàn toàn loại bỏ.

Một cách tiếp cận cơ bản để loại bỏ chuyển động từ các tween UI là đặt tham số Time của một TweenInfo0 khi ReducedMotionEnabledtrue, tạo ra hiệu ứng ngay lập tức khi chuyển UI đến mục tiêu.

UI Tween Snap-to-Target cho Giảm Chuyển Động

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")
-- Sử dụng thời gian tween là 0.75 giây trừ khi chế độ giảm chuyển động được kích hoạt
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()

Thay vì nhảy ngay lập tức, bạn có thể xử lý ReducedMotionEnabled với logic true/false rõ ràng hơn. Ví dụ, LocalScript sau sử dụng tween chuyển động theo mặc định, nhưng chuyển sang fade-in cho người chơi kích hoạt chế độ giảm chuyển động, tạo ra một chuyển tiếp tinh tế hơn mà không cần di chuyển vị trí.

Quay Lại Fade Tween cho Giảm Chuyển Động

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")
-- Tạo một nhóm canvas để tween tất cả các trẻ một cách đồng đều
local canvasGroup = Instance.new("CanvasGroup")
canvasGroup.Size = UDim2.fromScale(1, 1)
canvasGroup.BackgroundTransparency = 1
canvasGroup.Parent = menuUI
-- Thêm trẻ vào nhóm canvas
menuUI.SettingsFrame.Parent = canvasGroup
local tweenInfo = TweenInfo.new(0.75, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)
local tween
-- Sử dụng tween fade cho chế độ giảm chuyển động, hoặc tween chuyển động nếu không
if GuiService.ReducedMotionEnabled then
-- Đặt nhóm canvas ban đầu là hoàn toàn trong suốt (vô hình)
canvasGroup.GroupTransparency = 1
-- Fade nhóm canvas
tween = TweenService:Create(canvasGroup, tweenInfo, {GroupTransparency = 0})
else
-- Đặt nhóm canvas ban đầu ra khỏi màn hình
canvasGroup.Position = UDim2.fromScale(0, -1)
-- Di chuyển nhóm canvas vào màn hình
tween = TweenService:Create(canvasGroup, tweenInfo, {Position = UDim2.fromScale(0, 0)})
end
tween:Play()

Điều khiển âm lượng

Âm thanh khác nhau cùng phát tại một thời điểm có thể gây choáng ngợp, phân tâm, hoặc khó phân biệt. Cung cấp cho người dùng các điều khiển âm lượng cho các "nhóm" âm thanh khác nhau như hiệu ứng âm thanh, âm nhạc, và giọng nói cho phép họ tùy chỉnh trò chơi của mình và tập trung vào những gì họ cần.

Hãy xem ví dụ sau đây về một trò chơi rất ồn ào nơi người dùng có thể điều chỉnh âm lượng nhạc và hiệu ứng âm thanh riêng biệt.

©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.