虽然HoloLens支持不少种输入方式,包括蓝牙键盘在内。可是大部分应用仍是不能判定用户有物理键盘能够输入,因此虚拟键盘输入仍是必需要提供的。html
Unity提供了一个TouchScreenKeyboard类用于在没有物理键盘时接受虚拟键盘的输入。app
HoloLens上 TouchScreenKeyboard 使用的就是系统虚拟键盘。系统键盘不能出如今立体视图的顶部,因此只能建立一个2D XAML视图来调用系统键盘。输入完成返回到全息视图后,输入结果会当即被提交过来。操做流程以下:性能
有六种不一样的键盘视图能够直接拿来使用:ui
HoloLens系统键盘只能在UWP项目导出类型为XAML app的应用中使用。对于导出类型D3D和XAML之间你须要作些权衡(这里主要指性能差别吧),若是你不能作出取舍的话,你可能会但愿有个键盘输入的其余方案。spa
命名空间: UnityEngine3d
类型: TouchScreenKeyboardcode
首先要声明一个键盘对象和一个用来保存返回结果的字符串orm
UnityEngine.TouchScreenKeyboard keyboard; public static string keyboardText = ""
当请求键盘输入的事件发生后,调用任意一个你但愿的键盘来响应用户输入。htm
注意:textPlaceHolder参数的标题是特定的对象
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, false, false);
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, false, false, "Single-line title");
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, true, false, false);
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, true, false, false, "Multi-line Title");
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true, false);
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true, false, "Secure Single-line Title");
在Update()循环中检查键盘是否有新的输入并存储其内容
if (TouchScreenKeyboard.visible == false && keyboard != null) { if (keyboard.done == true) { keyboardText = keyboard.text; keyboard = null; } }
咱们知道从全息视图切换回2D视图进行键盘输入不是理想的方案。
目前其余的解决方案包括: