如何在iOS上为Unity3d添加无障碍功能

9
有没有任何方法可以通过Unity3d与iOS的VoiceOver可访问性本地支持进行通信?我们有一个需要具有可访问性的应用程序,但我们不确定如何处理。
由于我们需要语言支持,因此无法创建自己的自定义VoiceOver,因此我们需要进行本地处理。我们的直觉告诉我们需要通过插件与iOS通信,但似乎iOS硬件无法捕获Unity的点击,而且还覆盖了一些手势。
如果您有任何建议,请告诉我们,我们将不胜感激。

这看起来很有用:https://www.assetstore.unity3d.com/en/#!/content/9555 - Aaron Brager
链接已失效,但如果您访问正确的URL,您会发现此插件已被弃用。https://assetstore.unity.com/packages/tools/integration/ios-sdk-pro-native-api-access-from-c-javascript-and-boo-9555 - brennanyoung
3个回答

1
很遗憾,Unity和VoiceOver不能原生地配合使用,因为Unity负责所有渲染,包括UI。这就是为什么VoiceOver或任何其他屏幕阅读器无法访问UI并使其可访问的原因。 你唯一的选择是,如你已经提到的那样,在Unity内部实现相同的功能。 你可以自己实现,也可以使用一个插件来完成。
有一个可用的插件可以重新创建Unity UI的屏幕阅读器功能。它的工作方式类似于VoiceOver和TalkBack,并使用本地VoiceOver语音进行文本转语音输出。 https://assetstore.unity.com/packages/tools/gui/ui-accessibility-plugin-uap-87935

1
欢迎来到Stack Overflow!仅仅链接到自己的库或教程并不是一个好的答案。将其链接,解释为什么它可以解决问题,提供如何实现的代码,并声明您编写了它,这样会得到更好的答案。请参阅:什么是“良好”的自我推广? - Paul Roub
非常正确,我编辑了帖子以添加更多的解释。 - Michelle Martin

1

这里有一些注释在这里

通常情况下,您不需要为应用程序中的项目创建可访问性元素,因为标准的UIKit控件和视图默认是可访问的。但是,如果您有一个包含非视图项(例如图标或文本图像)的视图,这些项需要对残障用户进行访问,则需要创建可访问性元素来代表它们。在这种情况下,包含视图应该实现UIAccessibilityContainer非正式协议,并使用此方法创建可访问性元素以表示每个应暴露给辅助应用程序的项。

并且在这里

UIAccessibilityContainer非正式协议提供了一种方法,供UIView子类将选定组件作为单独元素进行访问。例如,一个视图可能包含图标或绘制的文本,对最终用户而言,它们看起来和功能上都像是单独的项目。但是,因为这些组件没有实现为UIView的实例,所以它们不能自动地被残障用户访问。因此,这样的容器视图应该实现UIAccessibilityContainer方法,向诸如VoiceOver之类的辅助应用程序提供关于这些组件的可访问性信息。

我不熟悉Unity本身,但似乎可以通过黑客手段来支持辅助功能的包含视图 - 您可以构建一组UIAccessibilityElemets,代表当前屏幕上可见的项目。

没错,但是你如何将Unity中的元素表示为UIView - Aaron Brager
好的,您可以将每个Unity元素对应到UIAccessibilityElemet类的对象。然后将它们添加到应用程序的最顶层视图中。 - Nikita Ivaniushchenko

0

Unity3d不支持由VoiceOver使用的.ipa文件,以提供允许该功能正常运行的钩子。因此,无法直接使用该功能来使应用程序更具可访问性。

因此,必须使用基于VoiceOver的一种在Unity内开发系统的方法,该方法可以利用一些当前VoiceOver惯例——即在Unity中重新创建VoiceOver处理页面和应用程序的方法。

除此之外,我不确定你能否在不采取"绕路"创建自己的语言支持并具有类似VoiceOver的可访问性功能的情况下做什么。


你是什么意思说“Unity3d不支持.ipa文件”?ipa文件只是一个zip文件。 - Aaron Brager

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接