Barrierefreiheit ist die Praxis, Produkte und Dienstleistungen so zu gestalten, dass sie von Menschen mit Behinderungen genutzt werden können. Aktuelle Statistiken zeigen, dass über 26 % der Menschen irgendeine Form von Behinderung haben, daher kann die Barrierefreiheit Ihres Roblox-Spiels Ihnen helfen, ein breiteres Publikum zu erreichen.
Textgröße
Spieler können Schwierigkeiten haben, kleinen Text zu lesen. Vergleichen Sie das folgende In-Game-Shop-Menü mit einer angewendeten Unschärfe, die simuliert, wie es für jemanden mit eingeschränktem Sehvermögen aussehen könnte.

Wenn Sie die Größe der kleineren Schriftarten erhöhen, wird es für die meisten Spieler klarer.

Farbkontrast
Spieler können Schwierigkeiten haben, hellen Text auf einem hellen Hintergrund oder dunklen Text auf einem dunklen Hintergrund zu lesen. Um die Barrierefreiheit zu verbessern, wird empfohlen, Text- und Hintergrundfarben mit ausreichendem Farbkontrast auszuwählen.


Farbenunabhängigkeit
Über 5 % der Menschen weltweit haben eine Form von Farbenblindheit. Obwohl es selten ist, dass jemand nur in Schwarz und Weiß sieht, stellen Sie sich vor, ein Spiel in Graustufen zu betrachten:

Durch die Modifizierung des Bildes, um unterschiedliche Symbole neben Farben zu verwenden, können mehr Spieler die Unterschiede im Gameplay und in anderen Kontexten erkennen:

Geräuschunabhängigkeit
Geräusche sind eine hervorragende Ergänzung für immersive Spiele, aber hörgeschädigte Spieler oder Personen, die den Ton abgeschaltet haben, könnten durch In-Game-Ereignisse, die nur akustisch vermittelt werden, verwirrt sein.
Betrachten Sie die folgende Szene, in der ein klingendes Telefon nur durch Geräuschsignal gegeben wird, und dann sowohl durch Geräusch als auch visuelle Hilfsmittel signalisiert wird.
Spielerpräferenzen
Verschiedene visuelle Einstellungen stehen Spielern über die Roblox- und die In-Game-Einstellungen-Menüs zur Verfügung, einschließlich bevorzugte Transparenz, bevorzugte Textgröße und reduzierte Bewegung. Für optimale Barrierefreiheit sollte Ihre Benutzeroberfläche all diese berücksichtigen.
Bevorzugte Transparenz
Die Einstellung Hintergrund Transparenz entspricht der GuiService.PreferredTransparency-Eigenschaft. Ein Wert von 1 zeigt an, dass der Spieler die standardmäßige Hintergrundtransparenz bevorzugt, während ein Wert von 0 anzeigt, dass der Spieler eine vollständig opake (nicht transparente) Hintergrundtransparenz für verbesserte Lesbarkeit und Kontrast bevorzugt.
Das Multiplizieren der BackgroundTransparency eines UI-Elements mit der PreferredTransparency ist der empfohlene Weg, diese Einstellung zu verwenden; Hintergründe werden undurchsichtiger, je näher PreferredTransparency an 0 kommt.
Verwenden Sie das Tagging-System, um allen UI-Elementen mit BackgroundTransparency, wie TextLabels oder Frames, ein Tag von TransparentBack zuzuweisen.

Vier TextLabel-Elemente mit unterschiedlichen BackgroundTransparency-Stufen Fügen Sie den folgenden Code in ein LocalScript innerhalb der StarterPlayerScripts ein.
Dynamische Anpassung für bevorzugte Transparenzlocal 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-- Speichern Sie die anfänglichen getaggten Instanzenfor _, object in CollectionService:GetTagged(TAG) doonInstanceAdded(object)end-- Erkennen Sie, wann eine getaggte Instanz hinzugefügt oder entfernt wirdCollectionService:GetInstanceAddedSignal(TAG):Connect(onInstanceAdded)CollectionService:GetInstanceRemovedSignal(TAG):Connect(onInstanceRemoved)-- Wenn die In-Game-Einstellung geändert wird, passen Sie die getaggten Instanzen anGuiService:GetPropertyChangedSignal("PreferredTransparency"):Connect(function()for object, defaultTransparency in transparentBackObjects doobject.BackgroundTransparency = defaultTransparency * GuiService.PreferredTransparencyendend)Testen Sie das Spiel, öffnen Sie das Einstellungen-Menü und passen Sie die Hintergrundtransparenz an. Die getaggten UI-Elemente sollten zwischen ihrer Standard-BackgroundTransparency und vollständig opak aktualisiert werden.

Bevorzugte Textgröße
Die Einstellung Textgröße entspricht der GuiService.PreferredTextSize-Eigenschaft, die standardmäßig auf Medium eingestellt ist. Spieler können die Textgröße über die Schriftart-rendering-Pipeline des Engines auf Large, Larger oder Largest erhöhen.
Beachten Sie beim Arbeiten mit UI-Elementen die folgenden Verhaltensweisen:
Text, der auf eine minimale und/oder maximale Größe über eine UITextSizeConstraint eingeschränkt ist, wird nicht unter die festgelegte MinTextSize/MaxTextSize schrumpfen oder darüber hinaus wachsen, unabhängig von der Einstellung der Textgröße des Spielers.
Wenn TextScaled für ein TextLabel oder TextButton aktiviert ist, wird der Text des Elements nicht durch den Wert der PreferredTextSize skaliert.
UI-Elemente mit aktivierter AutomaticSize werden schrumpfen/wachsen, wenn PreferredTextSize abnimmt/zunimmt (die Elementgrenzen werden an den skalierten Text angepasst).
Wenn TextWrapped für ein TextLabel oder TextButton aktiviert ist, wird der Text des Elements in zusätzliche Zeilen umbrochen, wenn PreferredTextSize zunimmt, innerhalb der Grenzen der absoluten Größe des Elements.
Die Ergebnisse von TextService:GetTextSize() und TextService:GetTextBoundsAsync() berücksichtigen Änderungen in Bezug auf PreferredTextSize.
Reduzierte Bewegung
Der Reduzierte Bewegung-Schalter entspricht der GuiService.ReducedMotionEnabled-Eigenschaft. Ein Wert von true zeigt an, dass der Spieler Bewegungseffekte durch UI Animationen/Transitions reduziert oder vollständig entfernt haben möchte.
Ein einfacher Ansatz zum Entfernen von Bewegung aus UI-Transitions besteht darin, den Time-Parameter von einem TweenInfo auf 0 einzustellen, wenn ReducedMotionEnabled true ist, sodass das UI-Objekt sofort auf sein Ziel springt.
UI-WTween Snap-to-Target für reduzierte Bewegunglocal 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")-- Verwenden Sie eine Tweenzeit von 0,75 Sekunden, es sei denn, die reduzierte Bewegung ist aktiviertlocal 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()
Alternativ zum sofortigen Springen können Sie ReducedMotionEnabled mit einer klareren Logik von true/false behandeln. Zum Beispiel nutzt das folgende LocalScript standardmäßig Bewegungstweens, wechselt jedoch zu einem Fade-in für Spieler, die reduzierte Bewegung aktivieren, was zu einem eleganteren Übergang ohne Positionsänderung führt.
Fallback zu Fade Tween für reduzierte Bewegunglocal 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")-- Erstellen Sie eine Canvas-Gruppe, um alle Kinder einheitlich zu tweenlocal canvasGroup = Instance.new("CanvasGroup")canvasGroup.Size = UDim2.fromScale(1, 1)canvasGroup.BackgroundTransparency = 1canvasGroup.Parent = menuUI-- Fügen Sie der Canvas-Gruppe Kinder hinzumenuUI.SettingsFrame.Parent = canvasGrouplocal tweenInfo = TweenInfo.new(0.75, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)local tween-- Verwenden Sie Fade Tween für reduzierte Bewegung oder einen Bewegungstween sonstif GuiService.ReducedMotionEnabled then-- Setzen Sie die Canvas-Gruppe zunächst auf vollständig transparent (unsichtbar)canvasGroup.GroupTransparency = 1-- Fade in Canvas-Gruppetween = TweenService:Create(canvasGroup, tweenInfo, {GroupTransparency = 0})else-- Setzen Sie die Canvas-Gruppe zunächst außerhalb des BildschirmscanvasGroup.Position = UDim2.fromScale(0, -1)-- Bewegen Sie die Canvas-Gruppe auf den Bildschirmtween = TweenService:Create(canvasGroup, tweenInfo, {Position = UDim2.fromScale(0, 0)})endtween:Play()
Lautstärkeregler
Unterschiedliche Geräusche, die gleichzeitig abgespielt werden, können überwältigend, ablenkend oder schwer zu unterscheiden sein. Den Nutzern Lautstärkeregler für verschiedene "Gruppen" von Audio wie Soundeffekte, Musik und Sprache bereitzustellen, ermöglicht es ihnen, ihr Spiel anzupassen und sich auf das zu konzentrieren, was sie benötigen.
Betrachten Sie das folgende Beispiel eines sehr lauten Spiels, in dem der Benutzer die Lautstärke von Musik und Soundeffekten separat anpassen kann.