littlewing

人間とコンピューターとメディアの接点をデザインするために考えたこと

HoloLensで文字を入力する(XAMLのキーボードを呼び出し)

Playing on the computer

HoloLensアプリをUnityで作成していると文字の入力に困る事があります。

結局、Direct XのD3Dの画面ではキーボードは呼び出すことができないので、XAMLの画面を呼び出すことになるのですが、 TouchScreenKeyboardを使えばそのあたり自動でやってくれます。

UnityのCanvas UIもそのままでは動かないので、無理にUIを使わずに、「TextMeshにアタッチして、Airタップでで切り替え」ができるスクリプトを作りました。

//(InputField .cs)

using UnityEngine;
using System.Collections;

public class InputField : MonoBehaviour
{

    TouchScreenKeyboard keyboard;
    public static string keyboardText = "Input any";

    void OnSelect()
    {
        if (keyboard == null)
            keyboard = new TouchScreenKeyboard(keyboardText, TouchScreenKeyboardType.Default, false, false, false, false, "sample prompting text that goes above the textbox");
        else
            keyboard.active = true;
    }
    void Update()
    {
        
        if (keyboard != null && keyboard.active == false)
        {
            if (keyboard.done == true)
            {
                
                keyboardText = keyboard.text;
                keyboard = null;
                gameObject.GetComponent<TextMesh>().text = keyboardText;
            }
        }

    }
}

TextMeshをタップすると、こんな感じのしょぼいXAMLの入力画面が表示されます。

f:id:pigshape:20170303164919p:plain

関連ドキュメント

その他、

試してないですが、D3Dで使えるAssetもあるようです。yuujiさんの記事

あとは、音声入力にしちゃうとか・・

XboxOne ワイヤレスコントローラー (ホワイト)

XboxOne ワイヤレスコントローラー (ホワイト)


littlewing.hatenablog.com