zoukankan      html  css  js  c++  java
  • HoloLens开发手记

    虽然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视图进行键盘输入不是理想的方案。

    目前其他的解决方案包括:

    • 使用听写识别来输入内容
      • 这个一般容易出错,并且不适用于输入密码
    • 自定义一个键盘在应用中使用
  • 相关阅读:
    RapidJavaEE 项目 开发流程说明
    [转]Ext自定义vtype动态验证
    博客园cnblogs chrome右键插件 开发
    extjs 2.0 回车切换表单,支持chrome,firefox,ie
    简单备份策略
    搜狗室验室 Web开发相关技术报告下载
    <转>记录一些BCB6的使用心得
    (转)远程桌面3389多用户登陆补丁及端口修改(XP+WIN7)
    <转>Java调用C/C++编写的第三方dll动态链接库(非native API) JNI
    清理SVN目录中.SVN
  • 原文地址:https://www.cnblogs.com/mantgh/p/5680580.html
Copyright © 2011-2022 走看看