如何为iOS的Unity3d添加可访问性

如何为iOS的Unity3d添加可访问性,ios,unity3d,accessibility,unity3d-2dtools,Ios,Unity3d,Accessibility,Unity3d 2dtools,有没有办法通过Unity3d与iOS的VoiceOver辅助功能本机支持通信?我们有一个需要可访问的应用程序,但我们不确定如何进行 创建我们自己的自定义画外音是不可能的,因为我们需要语言支持,所以我们需要使用本地语言。我们的直觉告诉我们通过插件与iOS进行通信,但是iOS硬件似乎无法捕获unity taps,但它似乎覆盖了我们的一些手势 如果您有任何建议,我们将不胜感激。Unity3d不支持VoiceOver使用的.ipa文件来提供允许该功能运行的挂钩。因此,该功能不能直接用于使应用程序更易于访

有没有办法通过Unity3d与iOS的VoiceOver辅助功能本机支持通信?我们有一个需要可访问的应用程序,但我们不确定如何进行

创建我们自己的自定义画外音是不可能的,因为我们需要语言支持,所以我们需要使用本地语言。我们的直觉告诉我们通过插件与iOS进行通信,但是iOS硬件似乎无法捕获unity taps,但它似乎覆盖了我们的一些手势


如果您有任何建议,我们将不胜感激。

Unity3d不支持VoiceOver使用的.ipa文件来提供允许该功能运行的挂钩。因此,该功能不能直接用于使应用程序更易于访问

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

除此之外,我不确定如果不花“很长的时间”创建与VoiceOver类似的可访问性功能的自己的语言支持,你能做些什么

通常,您不会为应用程序中的项目创建可访问性元素,因为默认情况下可以访问标准UIKit控件和视图。但是,如果您的视图包含非视图项目,如图标或文本图像,残疾用户需要访问这些项目,则可以创建可访问性元素来表示这些项目。在这种情况下,包含视图应实现UIAccessibilityContainer非正式协议,并使用此方法创建可访问性元素,以表示应向辅助应用程序公开的每个项

UIAccessibilityContainer非正式协议为UIView子类提供了一种方法,使所选组件可以作为单独的元素进行访问。例如,视图可能包含图标或绘制的文本,对于最终用户来说,这些图标或文本作为单独的项目显示和使用。但由于这些组件不是作为UIView实例实现的,因此残疾用户无法自动访问它们。因此,这样的容器视图应该实现UIAccessibilityContainer方法,以向VoiceOver等辅助应用程序提供有关这些组件的可访问性信息


我对Unity本身并不熟悉,但似乎可以通过破解包含视图来支持可访问性-您可以构建一组表示屏幕上当前可见项的
UIAccessibilityElements

不幸的是,Unity和VoiceOver无法在本地协同工作,因为Unity负责所有渲染,包括UI。这就是为什么VoiceOver或任何其他屏幕阅读器无法访问UI并使其可访问。 实际上,您唯一的选择是,正如您已经提到的,在Unity内部实现相同的功能。 您可以自己实现,也可以使用插件为您实现

有一个插件可以为Unity UI重新创建屏幕阅读器功能。它的工作原理类似于VoiceOver和TalkBack,并使用本地VoiceOver语音进行文本到语音输出。

这看起来很有用:断开了链接,但如果您转到正确的URL,您会发现此插件已被弃用。“Unity3d不支持.ipa文件”是什么意思?ipa文件只是一个zip文件。对,但如何将Unity中的元素表示为
UIView
?您可以将每个Unity元素对应到
UIAccessibilityElemet
类的对象。然后将它们添加到应用程序的最顶层视图欢迎使用堆栈溢出!仅仅链接到您自己的库或教程并不是一个好的答案。链接到它,解释它解决问题的原因,提供关于如何解决问题的代码,并否认您编写了它,这有助于获得更好的答案。看:非常正确,我编辑了这篇文章来添加更多的解释。