環境
- HoloLens2
- Windows 10 pc
- Unity 2019.4.1f1
- Mixed Reality Toolkit ver2.5.3
NonNativeKeyboard を使う上での注意点
日本語入力はできません。
InputFieldを使用すると標準のキーボードと二重に表示されてしまうのでInputFieldっぽいものを自作する必要があります。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
NonNativeInputField.cs 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(); } } 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