HoloLens开发手记 - Unity之Keyboard input 键盘输入
虽然HoloLens支持很多种输入方式,包括蓝牙键盘在内。但是大部分应用还是不能断定用户有物理键盘可以输入,所以虚拟键盘输入还是必须要提供的。
Unity提供了一个TouchScreenKeyboard类用于在没有物理键盘时接受虚拟键盘的输入。
HoloLens system keyboard behavior in Unity 在Unity中HoloLens系统键盘的做法
HoloLens上 TouchScreenKeyboard 使用的就是系统虚拟键盘。系统键盘不能出现在立体视图的顶部,所以只能创建一个2D XAML视图来调用系统键盘。输入完成返回到全息视图后,输入结果会立即被提交过来。操作流程如下:
- 用户调用方法来使应用唤起 TouchScreenKeyboard
- 在唤起 TouchScreenKeyboard 之前应用要响应处理应用暂停事件
- 在不断切换回全息视图前应用可能会被中断
- Unity将视图切换到一个自动放置在世界中的2D XAML视图上
- 用户使用系统键盘输入文本,并选择提交或者取消
- Unity将视图切换会全息视图
- 在TouchScreenKeyboard 操作完成后,应用需要相应处理应用恢复事件
- 通过 TouchScreenKeyboard 获取提交的文本内容
Available keyboard views 可使用的键盘视图
有六种不同的键盘视图可以直接拿来使用:
- Single-line textbox 单行文本框
- Single-line textbox with title 带标题的单行文本框
- Multi-line textbox 多行文本框
- Multi-line textbox with title 带标题的多行文本框
- Single-line password box 单行密码框
- Single-line password box with title 带标题的单行密码框
How to enable the system keyboard in Unity 如何在Unity中启用系统键盘
HoloLens系统键盘只能在UWP项目导出类型为XAML app的应用中使用。对于导出类型D3D和XAML之间你需要做些权衡(这里主要指性能差异吧),如果你不能做出取舍的话,你可能会希望有个键盘输入的其他方案。
- 打开File->Build Settings菜单
- 确保Platform是Windows Store, SDK选项设为 Universal 10,并将UWP Build Type 设为 XAML。
- 打开Player Settings菜单
- 展开Settings for Windows Store->Other Settings菜单
- 勾选Rendering目录下的Virtual Reality Supported选项,确保Windows Holographic出现在Virtual Reality Devices列表中
- 如果不勾选这个选项,项目会被导出为2D XAML应用
Using the system keyboard in your Unity app 在Unity应用中使用系统键盘
命名空间: UnityEngine
Declare the keyboard 声明键盘
首先要声明一个键盘对象和一个用来保存返回结果的字符串
UnityEngine.TouchScreenKeyboard keyboard;
public static string keyboardText = ""
Invoke the keyboard 调用键盘
当请求键盘输入的事件发生后,调用任意一个你希望的键盘来响应用户输入。
注意:textPlaceHolder参数的标题是特定的
Single-line textbox 单行文本框
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, false, false);
Single-line textbox with title 带标题的单行文本框
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, false, false, "Single-line title");
Multi-line textbox 多行文本框
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, true, false, false);
Multi-line textbox with title 带标题的多行文本框
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, true, false, false, "Multi-line Title");
Single-line password box 单行密码框
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true, false);
Single-line password box with title 带标题的单行密码框
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true, false, "Secure Single-line Title");
Retrieve typed contents 取回输入内容
在Update()循环中检查键盘是否有新的输入并存储其内容
if (TouchScreenKeyboard.visible == false && keyboard != null)
{
if (keyboard.done == true)
{
keyboardText = keyboard.text;
keyboard = null;
}
}
Alternative keyboard options 其他的键盘选项
我们知道从全息视图切换回2D视图进行键盘输入不是理想的方案。
目前其他的解决方案包括:
- 使用听写识别来输入内容
- 这个一般容易出错,并且不适用于输入密码
- 自定义一个键盘在应用中使用
HoloLens开发手记 - Unity之Keyboard input 键盘输入的更多相关文章
- HoloLens开发手记 - Unity development overview 使用Unity开发概述
Unity Technical Preview for HoloLens最新发行版为:Beta 24,发布于 09/07/2016 开始使用Unity开发HoloLens应用之前,确保你已经安装好了必 ...
- HoloLens开发手记 - Unity之摄像头篇
当你穿戴好HoloLens后,你就会处在全息应用世界的中心.当你的项目开启了"Virtual Reality Support"选项并选中了"Windows Hologra ...
- HoloLens开发手记 - Unity之语音输入
对于HoloLens,语音输入是三大基本输入方式之一,广泛地运用在各种交互中.HoloLens上语音输入有三种形式,分别是: 语音命令 Voice Command 听写 Diction 语法识别 Gr ...
- HoloLens开发手记 - Unity之Spatial mapping 空间映射
本文主要讨论如何在Unity项目中集成空间映射功能.Unity内置了对空间映射功能的支持,通过以下两种方式提供给开发者: HoloToolkit项目中你可以找到空间映射组件,这可以让你便捷快速地开始使 ...
- HoloLens开发手记 - Unity之Tracking loss
当HoloLens设备不能识别到自己在世界中的位置时,应用就会发生tracking loss.默认情况下,Unity会暂停Update更新循环并显示一张闪屏图片给用户.当设备重新能追踪到位置时,闪屏图 ...
- HoloLens开发手记 - Unity之Recommended settings 推荐设置
Unity提供了大量的设置选项来满足全平台的配置,对于HoloLens,Unity可以通过切换一些特定的设置来启用HoloLens特定的行为. Holographic splash screen 闪屏 ...
- HoloLens开发手记 - Unity之Gaze凝视射线
凝视是HoloLens首要输入方式,形式功能类似于桌面系统的光标,用于选择操作全息对象.然而在Unity中并没有明确的Gaze API或者组件. 实现Gaze Implementing Gaze 概念 ...
- HoloLens开发手记 - Unity之Gestures手势识别
手势识别是HoloLens交互的重要输入方法之一.HoloLens提供了底层API和高层API,可以满足不同的手势定制需求.底层API能够获取手的位置和速度信息,高层API则借助手势识别器来识别预设的 ...
- HoloLens开发手记 - Unity之Persistence 场景保持
Persistence 场景保持是HoloLens全息体验的一个关键特性,当用户离开原场景中时,原场景中全息对象会保持在特定位置,当用户回到原场景时,能够准确还原原场景的全息内容.WorldAncho ...
随机推荐
- docker-1 初识docker
五分钟认识docker 什么是docker? 把他想象成一个用了一种新颖方式实现的超轻量虚拟机,在大概效果上也是正确的.当然在实现的原理和应用上还是和VM有巨大差别的,并且专业的叫法是应用容器(App ...
- 关于统计变换(CT/MCT/RMCT)算法的学习和实现
原文地址http://blog.sina.com.cn/s/blog_684c8d630100turx.html 刚开会每周的例会,最讨厌开会了,不过为了能顺利毕业,只能忍了.闲话不多说了,下面把上周 ...
- Linux 下子线程 exit code 在主线程中的使用
Linux线程函数原型是这样的: void* thread_fun(void* arg) 它的返回值是 空类型指针,入口参数也是 空类型指针.那么线程的 exit code 也应该是 void * 类 ...
- 19 图形用户界面编程 - 《Python 核心编程》
- 二分法 organ Saltless
organ [描述] 现在某组织中(记作R)有n个人,他们的联络网形成一棵以Saltless为根的树,有边相连代表两人可以直接联络. 每个人有一个代号,Saltless代号为1,且除Saltless外 ...
- 怎么运用好ZBrush中Magnify膨胀笔刷
Magnify膨胀笔刷是ZBrush笔刷中经常使用的,利用该笔刷可绘制中心向四周膨胀的效果.本文内容向大家介绍ZBrush®中膨胀笔刷以便大家熟悉它的用法和特性. 查看更多内容请直接前往:http:/ ...
- SSH框架总结(框架分析+环境搭建+实例源码下载) 《转》
这篇文章比较易懂,易理解: 首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层W ...
- LYK 快跑!(LYK别打我-)(话说LYK是谁)
LYK 快跑!(run) Time Limit:5000ms Memory Limit:64MB 题目描述 LYK 陷进了一个迷宫! 这个迷宫是网格图形状的. LYK 一开始在(1,1)位置, 出口在 ...
- 【转载】Jmeter获取响应结果中参数出现的次数
在测试中,有时候会遇到要统计响应结果中某个参数出现了多少次,如果量级很大,一个一个数不太现实,下面讲一下实现自动打印出该参数出现的次数的方法. 例如我的响应信息为:{"ip":&q ...
- C#往线程里传递参数
Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托. Thread (ThreadStart) 初始化 Th ...