الوصول هو ممارسة تصميم المنتجات والخدمات لتكون قابلة للاستخدام من قبل الأشخاص ذوي الإعاقة. تشير الإحصائيات الأخيرة إلى أن أكثر من 26% من الناس لديهم نوع من الإعاقة، لذا فإن جعل لعبتك على Roblox متاحة يمكن أن يساعدك في الوصول إلى جمهور أوسع.
حجم النص
قد يجد اللاعبون صعوبة في قراءة النصوص الصغيرة. قارن القائمة التالية للمتجر داخل اللعبة مع تطبيق ضباب، يحاكي ما قد يبدو عليه الأمر لشخص ذو رؤية ضعيفة.

إذا زدت من حجم التسميات الخطية الصغيرة، فسيكون الأمر أكثر وضوحًا لمعظم اللاعبين.

تباين الألوان
قد يجد اللاعبون صعوبة في قراءة النص الفاتح على خلفية فاتحة، أو النص الداكن على خلفية داكنة. من أجل تحسين الوصول، يُنصح باختيار ألوان النص والخلفية بتباين ألوان كاف.


عدم الاعتماد على الألوان
لدى أكثر من 5% من الأشخاص في العالم شكل من أشكال عمى الألوان. على الرغم من أنه نادر أن يرى شخص ما فقط بالأبيض والأسود، تخيل مشاهدة لعبة بالدرجات الرمادية:

من خلال تعديل الصورة لاستخدام رموز مختلفة بجانب الألوان، يمكن لمزيد من اللاعبين التمييز بين اللعبة في سياقات أخرى:

عدم الاعتماد على الصوت
الصوت إضافة ممتازة للألعاب الغامرة، ولكن اللاعبون ذوو ضعف السمع أو أي شخص يقوم بإيقاف صوتهم سيشعرون بالحيرة بسبب الأحداث داخل اللعبة التي تُنقل فقط بالصوت.
اعتبر المشهد التالي حيث يتم الإشارة إلى الهاتف الذي يرن فقط بالصوت، ثم يتم الإشارة إليه بالصوت و المساعدات المرئية.
تفضيلات اللاعبين
تتوفر مجموعة متنوعة من الإعدادات المرئية للاعبين من قوائم Roblox وداخل اللعبة، بما في ذلك الشفافية المفضلة، حجم النص المفضل، وتقليل الحركة. من أجل الوصول الأمثل، يجب على واجهتك المستخدم أن تستوعب كل منها.
الشفافية المفضلة
تتناسب إعدادات شفافية الخلفية مع خاصية GuiService.PreferredTransparency. تشير القيمة 1 إلى أن اللاعب يفضل الشفافية الافتراضية للخلفية، بينما تشير القيمة 0 إلى أن اللاعب يفضل الشفافية الخلفية المعتمة بالكامل (غير الشفافة) من أجل تحسين القراءة والتباين.
ضرب BackgroundTransparency بأداة PreferredTransparency هو الطريقة الموصى بها لاستخدام هذا الإعداد؛ ستصبح الخلفيات أكثر تعتيمًا كلما اقتربت خاصية PreferredTransparency من 0.
باستخدام نظام التوسيم، قم بتطبيق علامة TransparentBack على جميع عناصر واجهة المستخدم التي تحتوي على 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)اختبر اللعبة، وافتح قائمة الإعدادات، واضبط شفافية الخلفية. يجب أن تتغير عناصر واجهة المستخدم الموسومة بين الشفافية BackgroundTransparency الافتراضية والمعتمة بالكامل.

حجم النص المفضل
تتناسب إعدادات حجم النص مع خاصية GuiService.PreferredTextSize التي تعود إلى Medium. يمكن للاعبين اختيار زيادة حجم النص عبر خط أنابيب عرض الخطوط للمحرك إلى Large، Larger، أو Largest.
عند العمل مع عناصر واجهة المستخدم، لاحظ السلوكيات التالية:
النص الذي يتم تحديده بحجم أدنى و/أو أقصى عبر UITextSizeConstraint لن يتقلص أقل من أو يتوسع فوق MinTextSize/MaxTextSize، بغض النظر عن إعداد حجم النص الخاص باللاعب.
عند تمكين TextScaled لعناصر TextLabel أو TextButton، لن يتم تحجيم نص العنصر بواسطة القيمة PreferredTextSize.
ستتقلص/تنمو عناصر واجهة المستخدم التي تم تفعيل AutomaticSize عندما يقل/يزيد PreferredTextSize (سيتم تغيير حدود العنصر لتناسب النص المعدل الحجم).
عند تمكين TextWrapped لعناصر TextLabel أو TextButton، سيتم لف نص العنصر على خطوط إضافية كلما زاد PreferredTextSize، ضمن حدود الحجم المطلق للعنصر.
النتائج المعادة بواسطة TextService:GetTextSize() وTextService:GetTextBoundsAsync() تحترم التغييرات المتعلقة بـ PreferredTextSize.
تقليل الحركة
تتناسب إعدادات تقليل الحركة مع خاصية GuiService.ReducedMotionEnabled. تشير القيمة true إلى أن اللاعب يريد تقليل أو إزالة تأثيرات الحركة عبر رسوم واجهة المستخدم/التويين.
نهج أساسي لإزالة الحركة من التويينات هو تعيين معامل Time إلى 0 عندما تكون ReducedMotionEnabled هي true، مما يجعل كائن واجهة المستخدم ينزلق نحو هدفه على الفور.
تويين واجهة المستخدم للثبات على الهدف لتقليل الحركة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()
بدلاً من الانزلاق الفوري، يمكنك التعامل مع ReducedMotionEnabled باستخدام منطق أكثر تميزًا بين true وfalse. على سبيل المثال، يتم استخدام 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()
عناصر التحكم في الصوت
يمكن أن يكون وجود أصوات مختلفة تعمل في نفس الوقت أمرًا ساحقًا، ومشتتًا، أو صعب التمييز. توفير عناصر التحكم في الصوت للمستخدمين من أجل "مجموعات" صوتية مختلفة مثل مؤثرات الصوت، والموسيقى، والكلام يسمح لهم بتخصيص لعبتهم والتركيز على ما يحتاجون إليه.
اعتبر المثال التالي للعبة صاخبة للغاية حيث يمكن للمستخدم تعديل مستويات الموسيقى ومؤثرات الصوت بشكل منفصل.