我正在使用带有 MixedRealityToolkit 中的 KeyboardInputField UI 元素的键盘预制件,当我在构建中选择一个 KeyboardInputFields 时,我会同时弹出键盘预制件和系统键盘。我使用这两种方法制作的早期版本没有显示系统虚拟键盘,但我不知道我可以更改什么来导致这种情况。我正在为 Unity 2017.2.1f1 使用 unity 2017.2.0p2-MRTP5 和 MixedRealityToolkit。(这是我与之交谈的 Microsoft 代表所建议的)我正在创建一种身临其境的体验,并将 Unity 构建类型设置为 D3D 而不是 XMAL。
2 回答
您的输入组件实际上继承了InputField
类namespace: UnityEngine.UI.
当您激活输入动作时,Windows 会自动调用系统内置键盘。
除非您避免使用 UnityEngine.UI.InputField
Component,否则禁用键盘是不可撤销的。
您可以做的是自己编辑脚本。
我在 MixedRealityToolkit 的错误报告中找到了解决方案
ivan2007:
“我的应用程序遇到了同样的问题。Unity 文档说:Windows 应用商店应用:在通用 Windows 10 应用上,触摸屏键盘仅在支持触摸输入的基于 XAML 的应用中受支持。
我的应用程序使用的是 Build Type D3D 而不是 xaml,所以这是第一个奇怪的事情。
但是,由于显示了键盘,我们可以尝试禁用触摸输入支持。
为此,我们可以定义一个由 BaseInputModule 使用的新 BaseInput,其中 touchSupported 被覆盖并设置为 false。
BaseInputModule 有一个受保护的属性 m_InputOverride,我们可以使用它来告诉 unity 使用新的 BaseInput。
也就是说,作为临时解决方法,我制作了附加脚本,可以添加到场景的 EventSystem 游戏对象或另一个游戏对象(在后一种情况下,您必须使用当前输入模块设置字段 BaseInputModule)。
就我而言,它似乎可以工作(未显示本机键盘)。
Unity 2017.3.0f3 with HMD
有人可以尝试这种解决方法,以便我们更有信心使用它吗?
谢谢”