您想找什么?
Engine & platform

了解 Unity 引擎对移动屏幕阅读器的支持

JULIA PERDIGUEIRO Software Development Manager, Accessibility
Jan 19, 2024|7 Min
了解 Unity 引擎对移动屏幕阅读器的支持
为方便起见,此网页已进行机器翻译。我们无法保证翻译内容的准确性或可靠性。如果您对翻译内容的准确性有疑问,请参阅此网页的官方英文版本。

越来越多的游戏开发商将游戏的无障碍性作为其创作中不可或缺的一部分,这是向包容性的积极转变。Unity 致力于提供支持,帮助开发人员实现其可访问性目标。正如Leah Skerry在 2023 年美国游戏开发者大会(GAconf USA 2023)上介绍的那样,Unity 一直在积极开发移动屏幕阅读器支持功能,这标志着未来几年将有许多无障碍运行时功能推出,从而增强游戏体验。

由于使用 Unity 开发的项目使用我们自己的图形用户界面 (GUI) 系统,因此移动屏幕阅读器以前无法兼容 Unity 制作的内容。这意味着,当安卓或 iOS 用户在设备上打开用 Unity 制作的游戏时,如果屏幕阅读器正在运行,那么在屏幕阅读器关闭之前,用户无法与游戏进行交互。让各种能力的用户都能在移动设备上享受游戏一直是我们的主要目标之一,今天就让我们深入了解这项支持对 Unity 开发人员意味着什么。

什么是屏幕阅读器?

屏幕阅读器是一种辅助技术,可将视觉输入以非视觉方式输出,如语音或盲文。运行安卓和 iOS 系统的移动设备分别内置了屏幕阅读器技术,如 TalkBack 和 VoiceOver。这种形式的辅助技术对盲人来说是必不可少的,对视障者、文盲或有认知障碍的人来说也很有用。

对于移动设备,屏幕阅读器使用文本到语音(TTS)引擎将屏幕上的信息翻译成语音。它们可用于通过触摸或手势导航用户界面。

屏幕阅读器和 Unity 游戏历史背景

使用 Unity 制作的旧版游戏默认情况下与屏幕阅读器不兼容。屏幕阅读器要浏览这样的应用程序,其技术就必须接收有关无障碍元素、这些元素在屏幕上的位置、它们的作用以及用户如何与用户界面交互的信息。这意味着我们需要一种方法来告诉屏幕阅读器,例如,在 这个位置有一个标签,上面有这个 特定的文本,在这个 位置有一个按钮,上面有这个特定的文本,当按钮被激活时要执行的操作是这个函数,等等。

Unity 屏幕阅读器 API

从 Unity 2023.2 Tech Stream 开始,并在 2023.3 Tech Stream(现在称为 Unity 6 Beta)中得到改进,开发人员现在可以将图形用户界面转换成数据,移动设备上的屏幕阅读器可以使用这些数据进行导航并与 Unity 游戏互动。该应用程序接口的开发并不依赖于特定的图形用户界面系统,因此任何使用 Unity 开发游戏的人都可以使用,无论他们使用何种技术来实现图形用户界面。非图形用户界面元素也可以表示为屏幕阅读器元素。

屏幕阅读器 API 是一个简单的数据结构层次,其中包含屏幕阅读器与每个图形用户界面元素进行交互所需的信息。层次结构中的每个节点通常代表游戏中的一个无障碍元素,具有一个标签(屏幕阅读器聚焦该节点时首先读取的内容)、屏幕上的一个位置、有时是一个值,以及帮助屏幕阅读器向用户提供有关该元素更多信息的额外信息,例如它是一个按钮还是一个切换器,或者该元素是否被禁用。

可访问性层次结构中节点的顺序定义了屏幕阅读器浏览屏幕的顺序。这意味着同级节点(层次结构中同一层级的节点)会按顺序读取,例如,父节点会在其子节点之前读取。

GIF 动画展示了 Unity 编辑器内的无障碍层级查看器
GIF 动画展示了 Unity 编辑器内的无障碍层级查看器
支持的平台

目前,该屏幕阅读器 API 的初步实施仅适用于运行 Android 或 iOS 操作系统的移动设备。根据我们的产品战略,我们还在考虑将支持扩展到 MacOS 和 Windows(每种操作系统都具有本地屏幕阅读器功能),以及基于桌面的网络浏览器。虽然游戏机本质上不是无障碍平台,但我们也在研究它们的可能性。

显示 iOS VoiceOver(左)和 Android TalkBack(右)屏幕阅读器技术的两张截图
显示 iOS VoiceOver(左)和 Android TalkBack(右)屏幕阅读器技术的两张截图
上手使用

Unity 意识到,确保每个游戏玩家,无论能力如何,都能充分参与到全球开发者创造的所有游戏中,具有重要意义。这一最新能力彰显了我们为所有玩家打造一个包容、愉快的游戏产业的承诺。我们的辅助功能团队刚刚起步,还有很多工作要做,请查看我们的路线图以及用户界面系统路线图,了解更多信息。

提到的 API 都有文档说明,可在《Unity 手册》的 "脚本 API "部分找到。通过AssistiveSupport 类开始使用。此外,我们还在GitHub 存储库中提供了一个实用示例(LetterSpell,如顶部横幅所示),介绍如何在您的 Unity 应用程序或游戏中实现屏幕阅读器功能,以及其他AccessibilitySettings使用示例。

我们希望了解您是如何使用我们的工具来支持无障碍环境的。向我们展示您在 Unity 中开发的神奇功能,并直接在无障碍论坛上向我们发送反馈。