MRTK 2.4 で追加された Input fields UI_KeyboardInputField and TMP_KeyboardInputField を利用して HoloLens Keyboard を表示する

MRTK 2.4 で追加された Input fields TMP_KeyboardInputField and UI_KeyboardInputField を用いて,
HoloLens Keyboard を表示します.

MRTK 2.3 まで

MRTK 2.3 までは以下の記事にあるように,InputField を入力しようとしても,
HoloLens Keyboard が自動的に表示されないようになっておりました.

bibinbaleo.hatenablog.com

そのため,自分で処理を作る必要がありました.

using UnityEngine;
using UnityEngine.UI;
using Microsoft.MixedReality.Toolkit.Experimental.UI;

[RequireComponent(typeof(MixedRealityKeyboard))]
public class ShowMixedRealityKeyBoard : MonoBehaviour
{
    private MixedRealityKeyboard m_MRKeyboard;

    void Awake()
    {
        m_MRKeyboard = gameObject.AddComponent<MixedRealityKeyboard>();
    }

    public void ShowKeyboard(InputField inputField)
    {
        if (m_MRKeyboard == null) return;

        m_MRKeyboard.ShowKeyboard(m_MRKeyboard.Text);
        inputField.text = m_MRKeyboard.Text;
    }
}

Input fields UI_KeyboardInputField and TMP_KeyboardInputField

MRTK 2.4 からキーボードを立ち上げるHelperクラスが追加されました.

hololabinc.github.io

  • UI_KeyboardInputField

通常UIのInputField にアタッチすると,入力時に HoloLens Keyboard が表示されます.

  • TMP_KeyboardInputField

TMPのInputField にアタッチすると,入力時に HoloLens Keyboard が表示されます.

Sample Scene

早速利用してみます.
MRTK/Examples/Experimental/MixedRealityKeyboard/Sceneの配下にMixedRealityKeyboardExampleがあります.

HoloLens Keyboard は Unity Editor上で実行しても表示されません.
同様に,Holographic Remoting を利用した場合,HoloLens 2では表示されません.
ですので,HoloLens 2実機ビルドで動作確認するしかありません.

以下は,Holographic Remotingを利用した場合.
わかりにくいですが,InputFieldにフォーカスしてもHoloLens Keyboardが出てません.
f:id:xrdnk:20200605225812j:plain

実機確認した場合が以下です.

自作に当てはめる

まず Canvas は Convert to Unity Canvas 済とします.

Assets/MRTK/SDK/Experimental/MixedRealityKeyboard/UI_KeyboardInputField.csをInputFieldオブジェクトにアタッチします.
TMPの場合は,Assets/MRTK/SDK/Experimental/MixedRealityKeyboard/TMP_KeyboardInputField.csをアタッチします.

これでOKです.