AccessibilityHierarchy
класс в UnityEngine.Accessibility
Выполнено в:UnityEngine.AccessibilityModule
Описание
Иерархическая модель данных, используемая экранным читателем для навигации и взаимодействия с приложением Unity.
Для того, чтобы программное обеспечение для чтения экрана могло перемещаться по приложению, оно должно получать информацию о доступных элементах, их расположении на экране, их роли и способах взаимодействия пользователя с ними. Эта информация должна быть организована в иерархии структур данных, называемой AccessibilityHierarchy.
Иерархия доступности работает независимо от иерархии UI. Вы можете использовать эти APIs с любой системой UI и даже с элементами, не являющимися UI, такими как элементы, которые являются частью вашей игры.
Структуры данных, которые образуют иерархию доступности, называются AccessibilityNode. Каждый узел представляет визуальный элемент, который должен быть доступен для программы для чтения экрана. Узел может иметь ноль или более AccessibilityNode.children и один AccessibilityNode.parent. AccessibilityHierarchy.rootNodes являются узлами верхнего уровня в иерархии, не имеющими родительского узла.
Пользователи могут перемещаться по иерархии доступности последовательно, перемещая фокус программы для чтения экрана с одного узла на другой. Некоторые программы для чтения экрана следуют последовательности перемещения по глубине, переходя к дочерним узлам узла перед переходом к его братьям, в то время как другие осуществляют навигацию в зависимости от позиции узлов на экране (заданной их AccessibilityNode.frame).
Чтобы разрешить программе для чтения экрана перемещаться по иерархии доступности, необходимо назначить иерархию AssistiveSupport.activeHierarchy для ее активации. Чтобы эффективно управлять системными ресурсами, Unity не сохраняет активную иерархию, когда программа для чтения экрана выключена. Вы должны активировать иерархию каждый раз, когда включается программа для чтения экрана (см. AssistiveSupport.screenReaderStatusChanged и AssistiveSupport.isScreenReaderEnabled).
Если вы изменяете активную иерархию, тогда вы должны уведомить программу для чтения экрана, вызвав IAccessibilityNotificationDispatcher.SendLayoutChanged или IAccessibilityNotificationDispatcher.SendScreenChanged (в зависимости от масштаба изменений). Изменения в иерархии доступности состоят из вызовов:
- AccessibilityHierarchy.AddNode
- AccessibilityHierarchy.Clear
- AccessibilityHierarchy.InsertNode
- AccessibilityHierarchy.MoveNode
- AccessibilityHierarchy.RemoveNode
- Изменения значений узла AccessibilityNode.frame.
Эти APIs в настоящее время поддерживаются на следующих платформах:
- RuntimePlatform.Android — начиная с Android 8.0 (API уровень 26)
- RuntimePlatform.IPhonePlayer
- RuntimePlatform.OSXPlayer
- RuntimePlatform.WindowsPlayer
Примечание: Поддерживается только иерархия доступности для основного окна приложения. Содержание, отображаемое в дополнительных окнах, например на вторичных дисплеях, не отображается для экранных читателей.
Дополнительные ресурсы:
- Доступность мобильных приложений
- Пример проекта с использованием доступности APIs
Свойства
| Свойство | Описание |
|---|---|
| rootNodes | Корневые узлы иерархии. |
Конструкторы
| Конструктор | Описание |
|---|---|
| AccessibilityHierarchy | Инициализирует и возвращает пустое AccessibilityHierarchy. |
Открытые методы
| Метод | Описание |
|---|---|
| AddNode | Создает новый AccessibilityNode с указанной меткой и добавляет его в иерархию под указанным родителем. |
| Clear | Сбрасывает иерархию в пустое состояние, удаляя все узлы и фокус программы чтения с экрана. |
| ContainsNode | Проверяет, существует ли заданный узел в иерархии доступности. |
| GetLowestCommonAncestor | Получает наименьшего общего предка двух узлов в иерархии доступности. |
| InsertNode | Создает новый AccessibilityNode с указанной меткой и вставляет его в указанный индекс в иерархии, под указанным родителем. |
| MoveNode | Перемещает узел в другое место в иерархии доступности, например, в другую родительскую группу или в другую позицию в списке дочерних групп родительской группы. |
| RefreshNodeFrames | Обновляет AccessibilityNode.frame всех узлов в иерархии доступности. |
| RemoveNode | Удаление узла из иерархии доступности и удаление или повторное родительское назначение его дочерних узлов. |
| TryGetNode | Попытка получить AccessibilityNode с заданным ID в иерархии. |
| TryGetNodeAt | Попытка получить AccessibilityNode в заданных координатах экрана. |