環境
- HoloLens2
- Windows 10 pc
- Unity 2019.4.1f1
- Mixed Reality Toolkit ver2.5.3
NonNativeKeyboard を使う上での注意点
日本語入力はできません。
InputFieldを使用すると標準のキーボードと二重に表示されてしまうのでInputFieldっぽいものを自作する必要があります。
ソースコード
using Microsoft.MixedReality.Toolkit.Experimental.UI;
using System;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
public class NonNativeInputField : MonoBehaviour, IPointerDownHandler
{
[SerializeField] private TextMeshProUGUI Text = null;
[SerializeField] private NonNativeKeyboard keyboard = null;
private void Awake()
{
if (keyboard == null)
{
keyboard = GameObject.FindWithTag("NonNativeKeyboard").GetComponent<NonNativeKeyboard>();
}
}
public void OnPointerDown(PointerEventData eventData)
{
keyboard.PresentKeyboard(Text.text);
for (int i = 0; i < Text.text.Length; i++)
{
keyboard.MoveCaretRight();
}
keyboard.OnClosed += DisableKeyboard;
keyboard.OnTextSubmitted += DisableKeyboard;
keyboard.OnTextUpdated += UpdateText;
}
private void UpdateText(string text)
{
Text.text = text;
}
private void DisableKeyboard(object sender, EventArgs e)
{
keyboard.OnTextUpdated -= UpdateText;
keyboard.OnClosed -= DisableKeyboard;
keyboard.OnTextSubmitted -= DisableKeyboard;
keyboard.Close();
}
}
使い方
-
Hierarchy に NonNativekeyboard を追加する。
(project > Mixed Reality Toolkit Foundation > SDK > Experimental > NonNativeKeyboard > prefabs) -
NonNativeKeyboard に "NonNativeKeyboard" タグをつける。
-
NonNativeKeyboard子要素の InputField の Interactable をオフにする。
(Hierarchy > NonNativeKeyboard > keyboard_Background > search > InputField) -
InputField の Disabled Color を 255,255,255,255 に設定
-
Hierarchy に UI > image を追加する。
-
Source Image を InputFieldBackground に設定
-
Imageの子要素として UI >Text-TextMeshPro を追加する。
-
Image に上のスクリプト(NanNativeInputField)をアタッチ。
-
Inspector から Text 及び NoNnativeKeyboard プロパティを設定。
説明
ポインターで操作できるように IPointerDownHandler インターフェイスを実装しています。
各種イベント
keyboard.OnClosed 閉じるボタンを押したときに呼び出される。
keyboard.OnTextSubmitted Enterey を押したときに呼び出される。
keyboard.OnTextUpdated テキストが更新されたときに呼び出される。
公式ドキュメント : NonNativeKeybaord