# Accessibility Prompts that survive a rebind already live in [[Context-Sensitive Prompts and Onboarding]]. This series is the rest of a class-sized accessibility pass: **colorblind-safe palettes**, **subtitle scale**, **reduced motion**, and a **recap** of Input System remapping (not a rewrite of [[3. Runtime Rebinding]]). It also points at the official **Accessibility** module (screen readers, `AccessibilitySettings` on mobile) without pretending that module is a complete "accessibility mode" by itself. **Target:** Unity **6000.5+**. Runtime settings should work on standalone and Quest; official `AccessibilitySettings` (font scale, bold text, closed captions) are documented as **Android and iPhonePlayer only** - always also ship an in-game toggle. For Quest, prefer **Unity 6.3 LTS (6000.3.27f2+)** and test on-device; do not assume mobile system settings exist on the headset. > [!warning] Code not compiled > `VisionUtility.GetColorBlindSafePalette` and `AccessibilitySettings` were checked against the Unity **6000.5** Scripting API and the Accessibility module intro. **No settings menu or palette script in this series has been compiled or play-tested in Unity or with a screen reader.** > [!note] Verification status > **Verified (6000.5, 2026-11-10):** `UnityEngine.Accessibility.VisionUtility.GetColorBlindSafePalette(Color[] palette, float minimumLuminance, float maximumLuminance)` returns the number of unambiguous colors (palette repeats if you ask for more); luminance 0-1, docs recommend ≥ 0.2 on dark backgrounds and ≤ 0.8 on light; colors aimed at normal vision, deuteranopia, protanopia, and tritanopia. `AccessibilitySettings.fontScale`, `isBoldTextEnabled`, `isClosedCaptioningEnabled` plus `fontScaleChanged`, `boldTextStatusChanged`, `closedCaptioningStatusChanged` - **read-only, Android and iPhonePlayer**. Accessibility module intro: native screen readers (Android TalkBack, iOS VoiceOver, Windows Narrator, macOS VoiceOver); you must build an `AccessibilityHierarchy` of `AccessibilityNode`s yourself; `AssistiveSupport` holds the active hierarchy; **Window > Accessibility > Accessibility Hierarchy Viewer** in Play Mode; module APIs depend on OS / screen reader - test on device. Input remapping: existing [[Input System]] / [[3. Runtime Rebinding]] / [[5. Worked Example Remappable Player]]. > **Not verified:** a documented cross-platform **OS reduced-motion** query in the 6000.5 Scripting API (this series uses an in-game toggle and does not invent `Application.reducedMotion`). Whether `AccessibilitySettings` works on Quest / XR; treat as unverified and rely on in-game settings. Full `AccessibilityNode` / role / state surface is only summarized - follow the module manual for a screen-reader implementation. No official "Unity colorblind post-effect" is cited; a Volume grade is optional makeup, not a substitute for distinguishable UI. ## Parts | # | Note | Covers | |---|---|---| | 1 | [[1. Accessibility Mindset and the Module]] | Design rules, official module, what this series will not invent | | 2 | [[2. Colorblind-Safe Palettes]] | `VisionUtility`, icons and patterns, not color-only | | 3 | [[3. Subtitle Scale and Captions]] | In-game scale, `AccessibilitySettings` on mobile, Localization | | 4 | [[4. Reduced Motion]] | Player toggle, Motion Blur, Impulse, flashes | | 5 | [[5. Remapping Recap and Settings Menu]] | Input System recap and a single settings screen | | 6 | [[6. Accessibility Pitfalls]] | Mobile-only APIs, screen readers, photosensitivity, Quest | ## Design lens (Level Up!) Level 8 in [[Level Up! (Review)]]: **KYSS**, icon clarity, a clean HUD - if a state is only a hue, it fails this chapter. Level 7: remappable controls, action on button press. Level 9 / prompts: do not hard-code "Press E." Accessibility is how those rules survive a wider audience, not a sticker you add after ship. ## Patterns used (Game Programming Patterns) - **Type Object / data** - an `AccessibilitySettingsAsset` or runtime settings object is data the HUD, camera, and audio observe. - **Observer** - `fontScaleChanged`, a reduced-motion event, `InputSystem.onDeviceChange` already in the Input series; the menu does not poll every frame. - **Command** - remaps stay Commands ([[Input System]]). See [[Game Programming Patterns (Review)]]. ## Related (existing) - [[Context-Sensitive Prompts and Onboarding]] - glyphs and fallback text - [[Input System]] / [[3. Runtime Rebinding]] / [[5. Worked Example Remappable Player]] - [[UI Toolkit and Diegetic UI]] / [[3.HUD and Inventory Example]] - [[Localization]] / [[2. Localizing UI Toolkit and uGUI Text]] - [[Post-Processing]] / Motion Blur in the effect catalog - [[Cinemachine 3]] / [[4.Impulse Noise and Extensions]] - [[Combat Feel and Hit Feedback]] / [[5. Worked Example Fullscreen Flash]] - [[High Scores, Saves and Player Stats]] / [[PlayerPrefs Advanced]] - [[Level Up! (Review)]] Levels 7, 8 ## Sources - Accessibility module intro (6000.5): https://docs.unity.com/en-us/engine/6000.5/manual/accessibility/module-intro - `VisionUtility.GetColorBlindSafePalette` (6000.5): https://docs.unity3d.com/6000.5/Documentation/ScriptReference/Accessibility.VisionUtility.GetColorBlindSafePalette.html - `AccessibilitySettings` (6000.5): https://docs.unity3d.com/6000.5/Documentation/ScriptReference/Accessibility.AccessibilitySettings.html