用途:在 Bevy 0.19 中设计或审查高标准电子游戏无障碍功能。无障碍是跨领域产品需求,应在输入、UI、音频、相机、叙事、多人及存档系统设计早期介入,仅后期补标签和字幕无法解决不可达的游戏机制。
标准依据:以 Xbox Accessibility Guidelines 为公共游戏工程基线,参考 WCAG 2.2(在可迁移处瞄准 AAA),并遵守各发行目标平台要求与认证指南;需与使用自有辅助技术的残障玩家做可用性测试。WCAG AAA 并非原生游戏通用认证,自动化检查不构成合规;需记录范围、例外、设备、测试版本、发现与修复证据。
基础能力:所有玩法与 UI 操作需设备中立、可重映射、冲突检查、可持久化,且无需指针即可通过菜单访问;输入支持热插拔、多设备同时、每玩家多控制器、未知控件、死区/灵敏度调节及数字模拟替代;长按、连按、组合键、快速时序与精确输入需有切换、时序或辅助替代。UI 需确定性焦点顺序、可见焦点、语义角色/名称/状态、可缩放文本与布局、足够对比度,且不单靠颜色传递信息。对话与有意义音频需同步隐藏字幕;有意义视觉事件需旁白/音频描述或等效提示。镜头晃动、运动模糊、闪光、自动运动等需安全默认或独立控制。无障碍设置需在首次游玩前可用,且重绑定、语言切换、断连与存档迁移后仍可用。
Bevy 用法:DefaultPlugins 含 InputFocusPlugin;需显式添加导航插件,并将无障碍名称放在交互控件同一实体上。示例:use bevy::input_focus::{directional_navigation::DirectionalNavigationPlugin, tab_navigation::tab_navigation::TabNavigationPlugin}; 通过 App::new().add_plugins((DefaultPlugins, TabNavigationPlugin, DirectionalNavigationPlugin)),在 setup 中为按钮实体添加 Button、AccessibleLabel::new("Start game")、AutoDirectionalNavigation::default() 与子文本。焦点、悬停、指针捕获与屏幕阅读器焦点相关但不相同,需测试键盘、十字键/摇杆、开关式扫描、触摸、指针及真实屏幕阅读器;自定义控件用 AccessKit 节点暴露变化的值/状态。
自适应控制器:通常经标准 gamepad/HID 映射到达,不得按品牌、厂商 ID 或设备名限制功能;将 Gamepad 实体视为能力与绑定集合,读取 left_stick()、just_pressed(GamepadButton::South) 与 GamepadButton::Other(0)。关闭默认特性时原生发现需 Bevy 的 bevy_gilrs 特性,而非仅 gamepad。leafwing-input-manager 0.21 是可选动作层,但不会替你生成无障碍设置、UI、持久化或机制替代。
实现检查:输入冻结前运行 scripts/audit_input_map.py;对每个主题/状态对运行 scripts/check_contrast.py,图像/视频背景单独取样;对源与本地化 VTT/SRT 运行 scripts/validate_captions.py;执行人工测试矩阵并留证。在验证发行版本与受支持输入/平台组合前,不要宣传无障碍特性标签。相关主题可参考 bevy-input-actions、bevy-audio、bevy-ui、bevy-cargo-features、bevy-fluent、bevy-cameras、bevy-physics、bevy-testing、bevy-core-concepts。