การเข้าถึง คือแนวทางการออกแบบผลิตภัณฑ์และบริการให้สามารถใช้งานได้โดยผู้ที่มีความพิการ สถิติเมื่อไม่นานมานี้เผยว่า มีผู้คนกว่า 26% ที่มีความพิการบางประเภท ดังนั้นการทำให้เกม Roblox ของคุณเข้าถึงได้สามารถช่วยให้คุณเข้าถึงผู้ชมที่กว้างขึ้น
ขนาดข้อความ
ผู้เล่นอาจพบปัญหาในการอ่านข้อความที่มีขนาดเล็ก เปรียบเทียบเมนูร้านค้าในเกมด้านล่างนี้ด้วยการเบลอเพื่อจำลองภาพที่อาจดูเหมือนกับใครบางคนที่มีวิสัยทัศน์บกพร่อง

ถ้าคุณเพิ่มขนาดของข้อความขนาดเล็ก ผลลัพธ์จะชัดเจนขึ้นสำหรับผู้เล่นส่วนใหญ่

ความคมชัดของสี
ผู้เล่นอาจพบความยากในการอ่านข้อความสว่างบนพื้นหลังสว่าง หรือข้อความมืดบนพื้นหลังมืด เพื่อปรับปรุงการเข้าถึง แนะนำให้คุณเลือกสีข้อความและสีพื้นหลังที่มีความคมชัดเพียงพอ


การไม่พึ่งพาสี
มีผู้คนกว่า 5% ทั่วโลกที่มีอาการตาบอดสี แม้ว่าในกรณีที่หายากจะมีคนที่มองเห็น เฉพาะ ขาวดำ แต่ลองนึกภาพการมองเกมในเฉดสีเทา:

โดยการปรับเปลี่ยนภาพเพื่อใช้ สัญลักษณ์ ต่างๆ ร่วมกับสี ผู้เล่นมากขึ้นสามารถบอกความแตกต่างในการเล่นและในบริบทอื่นๆ:

การไม่พึ่งพาเสียง
เสียงเป็นคุณสมบัติที่ยอดเยี่ยมสำหรับเกมที่ดื่มด่ำ แต่ผู้เล่นที่มีอาการได้ยินบกพร่องหรือใครก็ตามที่ปิดเสียงจะรู้สึกสับสนกับเหตุการณ์ในเกมที่ถูกถ่ายทอด เฉพาะ ด้วยเสียง
พิจารณาฉากต่อไปนี้ซึ่งมีโทรศัพท์ที่ดังขึ้นเพียงแค่ส่งสัญญาณด้วยเสียง และจากนั้นส่งสัญญาณด้วยเสียง และ ช่วยเหลือสายตา
ความชอบของผู้เล่น
มีการตั้งค่าภาพต่างๆ ที่พร้อมใช้งานให้กับผู้เล่นจากเมนู การตั้งค่า ของ Roblox และในเกม รวมถึง ความโปร่งแสงที่ต้องการ, ขนาดข้อความที่ต้องการ และ การลดการเคลื่อนไหว สำหรับการเข้าถึงอย่างเหมาะสม หน้าจอ ส่วนติดต่อผู้ใช้ ของคุณควรรองรับแต่ละรายการ
ความโปร่งแสงที่ต้องการ
การตั้งค่า ความโปร่งแสงของพื้นหลัง จะเชื่อมโยงกับคุณสมบัติ GuiService.PreferredTransparency ค่า 1 หมายถึงผู้เล่นต้องการความโปร่งแสงพื้นหลังตามค่าเริ่มต้น ในขณะที่ค่า 0 หมายถึงผู้เล่นต้องการความโปร่งแสงพื้นหลังแบบทึบทั้งหมดเพื่อการอ่านที่ดียิ่งขึ้นและความแตกต่าง
การคูณ BackgroundTransparency ของ UI กับ PreferredTransparency เป็นวิธีที่แนะนำในการใช้การตั้งค่านี้; พื้นหลังจะกลายเป็นทึบมากขึ้นเมื่อ PreferredTransparency เข้าใกล้ 0
โดยใช้ระบบ การแท็ก ให้นำแท็ก TransparentBack ไปใช้กับไอเท็ม UI ทั้งหมดที่มี BackgroundTransparency เช่น TextLabels หรือ Frames

สี่องค์ประกอบ TextLabel ที่มีระดับ BackgroundTransparency ที่แตกต่างกัน วางโค้ดต่อไปนี้ลงใน 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)ทดสอบเกม เปิดเมนู การตั้งค่า และปรับ ความโปร่งแสงของพื้นหลัง องค์ประกอบ UI ที่ถูกแท็กควรอัปเดตระหว่าง BackgroundTransparency เริ่มต้นและแบบทึบทั้งหมด

ขนาดข้อความที่ต้องการ
การตั้งค่า ขนาดข้อความ จะเชื่อมโยงกับคุณสมบัติ GuiService.PreferredTextSize ซึ่งค่าเริ่มต้นคือ Medium ผู้เล่นสามารถเลือกเพิ่มขนาดข้อความผ่านระบบการเรนเดอร์ฟอนต์ของเครื่องยนต์ไปยัง Large, Larger หรือ Largest
เมื่อทำงานกับองค์ประกอบ UI โปรดทราบว่าพฤติกรรมต่อไปนี้:
ข้อความที่ถูกจำกัดให้มีขนาดขั้นต่ำและ/หรือขนาดสูงสุดผ่าน UITextSizeConstraint จะ ไม่ หดตัวลงหรือขยายออกเหนือ MinTextSize/MaxTextSize, โดยที่ไม่คำนึงถึงการตั้งค่าขนาดข้อความของผู้เล่น
เมื่อ TextScaled เปิดใช้งานสำหรับ TextLabel หรือ TextButton, ข้อความขององค์ประกอบจะ ไม่ ถูกปรับตามค่า PreferredTextSize
องค์ประกอบ UI ที่เปิดใช้งาน AutomaticSize จะหดตัว/ขยายขึ้นเมื่อ PreferredTextSize ลดลง/เพิ่มขึ้น (ขอบเขตขององค์ประกอบจะปรับขนาดให้พอดีกับข้อความที่เปลี่ยนขนาด)
เมื่อ TextWrapped เปิดใช้งานสำหรับ TextLabel หรือ TextButton, ข้อความขององค์ประกอบจะถูกห่อเป็นบรรทัดเพิ่มเติมเมื่อ PreferredTextSize เพิ่มขึ้น ภายในขีดจำกัดของขนาดสัมบูรณ์ขององค์ประกอบ
ผลลัพธ์ที่ส่งกลับจาก TextService:GetTextSize() และ TextService:GetTextBoundsAsync() จะให้เกียรติกับการเปลี่ยนแปลงที่เกี่ยวข้องกับ PreferredTextSize
การลดการเคลื่อนไหว
การเปิด/ปิดสวิตช์ ลดการเคลื่อนไหว จะเชื่อมโยงกับคุณสมบัติ GuiService.ReducedMotionEnabled ค่า true หมายถึงผู้เล่นต้องการให้เอฟเฟกต์การเคลื่อนไหวผ่าน การเคลื่อนไหวของ UI/อนิเมชัน ถูกลดหรือยกเลิก
วิธีการพื้นฐานในการลบการเคลื่อนไหวจากการเคลื่อนไหวของ UI คือการตั้งค่าพารามิเตอร์ Time ของ TweenInfo ให้เป็น 0 เมื่อ ReducedMotionEnabled เป็น true ทำให้วัตถุ 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()อีกทางเลือกหนึ่งในการกระตุกทันที คุณสามารถจัดการกับ ReducedMotionEnabled ด้วยตรรกะที่ชัดเจนกว่า true/false ตัวอย่างรหัส 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()การควบคุมเสียง
การเล่นเสียงต่างๆ พร้อมกันอาจทำให้รู้สึกท่วมท้น สับสน หรือยากต่อการแยกแยะ การให้ผู้ใช้ควบคุมระดับเสียงสำหรับ "กลุ่ม" เสียงต่างๆ เช่น เสียงเอฟเฟกต์ เพลง และการพูดช่วยให้พวกเขาปรับแต่งเกมของตนและมุ่งเน้นไปที่สิ่งที่พวกเขาต้องการ
พิจารณาตัวอย่างเกมที่มีเสียงดังมากซึ่งผู้ใช้สามารถปรับระดับเสียงเพลงและเสียงเอฟเฟกต์แยกกันได้