Unity 6.3
0 онлайн 101 гостей 3 в системе
Вход
Доступность Шаг 2 из 7

Введение в модуль доступности

Доступность означает создание интерфейса, который могут использовать люди с ограниченными возможностями. Это включает людей, которые полагаются на вспомогательные технологии, такие как экранные читатели, а также тех, кто использует системные настройки, такие как увеличенный текст или закрытые субтитры. Сведения о категориях инвалидности, вспомогательных технологиях и о том, почему доступность важна, см. в Концепции доступности.

Модуль Accessibility Unity позволяет играм и приложениям взаимодействовать со встроенными средствами чтения с экрана и реагировать на системные настройки специальных возможностей на устройстве пользователя. Этот модуль помогает сделать визуальные интерфейсы доступными для всех.

Модуль доступности включён по умолчанию. Если он не включён в вашем проекте, вы можете включить его через Package Manager.

Поддержка нативного экранного читателя

Основные мобильные и настольные операционные системы имеют встроенные экранные читатели.

В следующей таблице перечислены платформы и средства чтения экрана, поддерживаемые модулем доступности:

Платформа Считыватели экрана
Android TalkBack
iOS VoiceOver
Windows Диктор
macOS VoiceOver

Вы создаете метаданные доступности, которые читатели экрана понимают, и модуль автоматически обрабатывает перевод для конкретной платформы.

Основные возможности

Модуль доступности позволяет:

  • Создание удобных для навигации интерфейсов для пользователей экранных читателей
  • Предоставление текстовых альтернатив визуальному контенту
  • Определение семантических ролей, таких как кнопка, ползунок, заголовок и изображение
  • Показ интерактивных состояний, таких как отключенное, выбранное и развернутое
  • Уведомление экранных читателей об изменениях динамического содержимого
  • Обработка уведомлений о действиях пользователя с помощью экранного читателя
  • Работа вместе с любой UI системы, включая Unity UI и пользовательские UI фреймворки
  • Добавить поддержку экранного чтения для любых игровых объектов в мире 2D или 3D

Примечание: Поскольку модуль доступности использует нативный APIs, ожидаемое поведение модуля APIs зависит от платформы, версии операционной системы и программы для чтения экрана. Всегда тестируйте приложение с помощью целевых программ для чтения экрана.

Ограничения

Модуль доступности имеет следующие ограничения:

  • Он поддерживает только экранные читатели, перечисленные выше. Он не охватывает другие экранные читатели или вспомогательные технологии.
  • Он не выводит иерархию доступности из вашей сцены или UI автоматически. Вы должны создать и обновить иерархию доступности, чтобы соответствовать элементам, которые вы хотите показать экранным читателям.
  • Он не знает ни сцены, ни иерархии UI. Вы должны синхронизировать данные доступности с визуальными элементами в вашем собственном коде.
  • Из-за различий между платформой APIs, некоторые модули доступности APIs имеют ограничения, специфичные для платформы. Эти ограничения описаны в документации модуля доступности API.

Технический обзор

Используйте AssistiveSupport API для включения поддержки программ чтения с экрана в вашем приложении. Этот класс хранит созданную вами иерархию доступности, позволяет приложению уведомлять программу чтения с экрана об изменениях интерфейса и уведомляет приложение о событиях, вызванных действиями пользователя.

Модуль доступности использует узловую иерархию AccessibilityHierarchy, отдельную от иерархии GameObject. Вы создаете экземпляры AccessibilityNode, которые представляют визуальные элементы вашего интерфейса и игрового мира. У каждого узла есть свойства, задающие его метку, значение, роль, состояние и связи с другими узлами.

Your active Unity scene (visual)                        AssistiveSupport (semantic)
└── Canvas (uGUI) / UI Document (UI Toolkit)            └── AccessibilityHierarchy
    └── Button                                              └── AccessibilityNode
        └── Text: "Start Game"                                  ├── Label: "Start Game"
                                                                └── Role: Button

Вы можете использовать Доступность Hierarchy (меню: Окно > Доступность > Доступность Hierarchy) во время режима воспроизведения для просмотра вашей активной иерархии доступности в реальном времени.

Перевод платформы

Когда вы устанавливаете роль узла, модуль Доступности переводит ее на соответствующий нативный API:

Платформа Родной API Представление узла
Android android.view.accessibility AccessibilityNodeInfo с className = "android.widget.Button"
iOS UIAccessibility UIAccessibilityElement с accessibilityTraits = UIAccessibilityTraitButton
Windows UI Автоматизация IRawElementProviderSimple с ControlType = UIA_ButtonControlTypeId
macOS NSAccessibility NSAccessibilityElement с accessibilityRole = NSAccessibilityButtonRole

Поток событий

Следующая диаграмма иллюстрирует поток событий между пользователем экранного читателя, операционной системой, модулем доступности Unity и вашим приложением, когда пользователь взаимодействует с кнопкой доступности в вашем UI:

The user activates the button with the screen reader
    → The operating system sends the activation event to Unity
        → Unity translates the event to AccessibilityNode.invoked
            → Your event handler invokes the click event on the button
                → The button responds normally

Поддерживаемые UI элементы

Модуль доступности поддерживает многие общие UI элементы, включая следующие элементы с их ожидаемыми свойствами и событиями:

Элемент Роль Свойства и события
Кнопка AccessibilityRole.Button AccessibilityNode.invoked
Слайдер AccessibilityRole.Slider AccessibilityNode.value, AccessibilityNode.incremented, AccessibilityNode.decremented
Переключить AccessibilityRole.Toggle AccessibilityState.Selected, AccessibilityState.None
Ввод текста AccessibilityRole.TextField AccessibilityNode.value
Раскрывающееся меню AccessibilityRole.Dropdown ,AccessibilityNode.value,, ,AccessibilityState.Expanded,, ,AccessibilityState.None,и дочерние узлы для вариантов

Настройки доступности системы

Используйте AccessibilitySettings API для получения и прослушивания обновлений в настройках масштабирования шрифта, жирного текста и закрытых субтитров на устройстве пользователя и соответствующей настройки UI и игрового процесса. Это улучшает удобство использования для людей с нарушениями зрения, слуха и когнитивных функций, а также для пользователей в шумных или тихих средах или тех, чьи нативный язык отличается от языка вашей игры или приложения.

Настройки доступности APIs доступны для Android и iOS.

Дополнительные ресурсы

  • 📚 Документация: Модуль доступности API ссылка
  • Сообщество: Поддержка мобильных экранных считывателей в Unity
  • Сообщество: Поддержка настольного экранного читателя в Unity
  • 📺 Видео: Охват новых аудиторий с помощью доступности и локализации в Unity 6 (Unite 2025)
  • ⚙️ Образец проекта: LetterSpell: пример доступного Unity применение
  • Сообщество: Unity Дискуссии: Доступность