虽然HoloLens支持很多种输入方式,包括蓝牙键盘在内。但是大部分应用还是不能断定用户有物理键盘可以输入,所以虚拟键盘输入还是必须要提供的。

Unity提供了一个TouchScreenKeyboard类用于在没有物理键盘时接受虚拟键盘的输入。

HoloLens system keyboard behavior in Unity 在Unity中HoloLens系统键盘的做法


HoloLens上 TouchScreenKeyboard 使用的就是系统虚拟键盘。系统键盘不能出现在立体视图的顶部,所以只能创建一个2D XAML视图来调用系统键盘。输入完成返回到全息视图后,输入结果会立即被提交过来。操作流程如下:

  1. 用户调用方法来使应用唤起 TouchScreenKeyboard

    • 在唤起 TouchScreenKeyboard 之前应用要响应处理应用暂停事件
    • 在不断切换回全息视图前应用可能会被中断
  2. Unity将视图切换到一个自动放置在世界中的2D XAML视图上
  3. 用户使用系统键盘输入文本,并选择提交或者取消
  4. Unity将视图切换会全息视图
    • TouchScreenKeyboard 操作完成后,应用需要相应处理应用恢复事件
  5. 通过 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之间你需要做些权衡(这里主要指性能差异吧),如果你不能做出取舍的话,你可能会希望有个键盘输入的其他方案

  1. 打开File->Build Settings菜单
  2. 确保Platform是Windows Store, SDK选项设为 Universal 10,并将UWP Build Type 设为 XAML。
  3. 打开Player Settings菜单
  4. 展开Settings for Windows Store->Other Settings菜单
  5. 勾选Rendering目录下的Virtual Reality Supported选项,确保Windows Holographic出现在Virtual Reality Devices列表中
  • 如果不勾选这个选项,项目会被导出为2D XAML应用

Using the system keyboard in your Unity app 在Unity应用中使用系统键盘


命名空间UnityEngine

类型TouchScreenKeyboard

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 键盘输入的更多相关文章

  1. HoloLens开发手记 - Unity development overview 使用Unity开发概述

    Unity Technical Preview for HoloLens最新发行版为:Beta 24,发布于 09/07/2016 开始使用Unity开发HoloLens应用之前,确保你已经安装好了必 ...

  2. HoloLens开发手记 - Unity之摄像头篇

    当你穿戴好HoloLens后,你就会处在全息应用世界的中心.当你的项目开启了"Virtual Reality Support"选项并选中了"Windows Hologra ...

  3. HoloLens开发手记 - Unity之语音输入

    对于HoloLens,语音输入是三大基本输入方式之一,广泛地运用在各种交互中.HoloLens上语音输入有三种形式,分别是: 语音命令 Voice Command 听写 Diction 语法识别 Gr ...

  4. HoloLens开发手记 - Unity之Spatial mapping 空间映射

    本文主要讨论如何在Unity项目中集成空间映射功能.Unity内置了对空间映射功能的支持,通过以下两种方式提供给开发者: HoloToolkit项目中你可以找到空间映射组件,这可以让你便捷快速地开始使 ...

  5. HoloLens开发手记 - Unity之Tracking loss

    当HoloLens设备不能识别到自己在世界中的位置时,应用就会发生tracking loss.默认情况下,Unity会暂停Update更新循环并显示一张闪屏图片给用户.当设备重新能追踪到位置时,闪屏图 ...

  6. HoloLens开发手记 - Unity之Recommended settings 推荐设置

    Unity提供了大量的设置选项来满足全平台的配置,对于HoloLens,Unity可以通过切换一些特定的设置来启用HoloLens特定的行为. Holographic splash screen 闪屏 ...

  7. HoloLens开发手记 - Unity之Gaze凝视射线

    凝视是HoloLens首要输入方式,形式功能类似于桌面系统的光标,用于选择操作全息对象.然而在Unity中并没有明确的Gaze API或者组件. 实现Gaze Implementing Gaze 概念 ...

  8. HoloLens开发手记 - Unity之Gestures手势识别

    手势识别是HoloLens交互的重要输入方法之一.HoloLens提供了底层API和高层API,可以满足不同的手势定制需求.底层API能够获取手的位置和速度信息,高层API则借助手势识别器来识别预设的 ...

  9. HoloLens开发手记 - Unity之Persistence 场景保持

    Persistence 场景保持是HoloLens全息体验的一个关键特性,当用户离开原场景中时,原场景中全息对象会保持在特定位置,当用户回到原场景时,能够准确还原原场景的全息内容.WorldAncho ...

随机推荐

  1. "ORA-12154: TNS:could not resolve the connect identifier specified"的解决办法

    添加环境变量解决: 变量名:TNS_ADMIN 变量值:D:\Ocl\product\11.2.0\dbhome_1\NETWORK\ADMIN tnsnames.ora所在的路径

  2. 利用mysql对特殊字符和超长字符会进行截断的特性 进行存储型XSS攻击——WordPress <4.1.2 & <=4.2 存储型xss

    转自:Baidu Security LabXteam http://xteam.baidu.com/?p=177 漏洞概述 本次漏洞出现两个使用不同方式截断来实现的存储型xss,一种为特殊字符截断,一 ...

  3. 【mysql】关于checkpoint机制

    一.简介 思考一下这个场景:如果重做日志可以无限地增大,同时缓冲池也足够大,那么是不需要将缓冲池中页的新版本刷新回磁盘.因为当发生宕机时,完全可以通过重做日志来恢复整个数据库系统中的数据到宕机发生的时 ...

  4. Post-office 树状数组

    Post office 题目描述 There are N(N<=1000) villages along a straight road, numbered from 1 to N for si ...

  5. dubbo学习之服务提供者

    1.简介 这里主要记录如何搭建一个spring框架,提供一个dubbo服务,包括详细的步骤. 2.详细步骤 2.1 项目目录结构 2.2 创建maven项目 new --> Web Projec ...

  6. centos 下使用locate命令

    首先安装mlocate yum -y install mlocate 更新数据库:updatedb 查找:locate nginx

  7. zoj 3229 Shoot the Bullet(无源汇上下界最大流)

    题目:Shoot the Bullet 收藏:http://www.tuicool.com/articles/QRr2Qb 把每一天看成一个点,每个女孩也看成一个点,增加源和汇s.t,源向每一天连上[ ...

  8. [转]Cordova + Ionic in Visual Studio - 101 Tutorial [Part I]

    本文转自:http://binarylies.ghost.io/cordova-ionic-in-visual-studio/ Hi everyone, I thought about lending ...

  9. 【Android UI设计与开发】1.引导界面(一)ViewPager介绍和简单实现

    1.ViewPager 实现效果图 2.ViewPager 实现功能 ViewPager类提供了多界面切换的新效果,新效果有如下特征: <1>当前显示一组界面中的其中一个界面: <2 ...

  10. c++实现排序(简单插入,希尔,选择,快速,冒泡,堆排)

    简单插入排序 适用于记录较少且基本有序的记录.算法思想:给定一个存在分界线的序列,分界线左边有序,右边无序,依次将右边的没排序的数与左边序列进行比较,插入相应位置,再对分界线做出相应调整,下面用图来说 ...