本日はオリジナルのUI枠です。
本ブログではHoloLensで使用するためのオリジナルのUIを作成してGitHubで公開しています。
アプリケーションでテンキーを使用したかったので簡単に作成しました。
その1はテンキーのレイアウトとアイコンを作成しました。
その2はMRTKのバージョン2.4から導入された機能のIconSetを作成しました。
前回でテンキーの大まかな形ができたので今回は機能を作成します。
〇スクリプト
今回以下のようなスクリプトを作成しました。
using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; /// <summary> /// Function of the numeric keypad /// </summary> public class TenKeyInput : MonoBehaviour { [Serializable] public class MyEvent : UnityEvent<string> { } [SerializeField] MyEvent _tenKyeevent; string _numberField; //通常の数値を入力する。 public void KeyInput(float number) { _numberField += number.ToString() ; _tenKyeevent.Invoke(_numberField); } }
スクリプトの機能自体の説明は次回おこないます。
これをTenKeyオブジェクトにアタッチし、子オブジェクトの各キーの[PressableButtonHoloLens 2]コンポーネントのEventsのButton Pressed()に新しいイベントを作成してTenKeyオブジェクトをイベントに指定します。
呼び出す関数に[KeyInput]を指定します。
最後に引数で各キーの値に相当するものを入力します。
〇入力フィールド
キーを入力した際に表示する先はTenKeyInputコンポーネントのTenKeyevent(String)に設定します。
通常のUnityEventは動的に関数の引数を指定することはできませんが、このTenKeyevent(String)では動的にString型が引数として渡されるようになっています。
Text(TMP)を作成し、TenKeyInputのTenKeyevent(String)に指定します。
実行しHandTrackingの指でテンキーを叩くとテキストに入力した文字が表示されるようになります。
以上でテンキーの基本形が完成しました。
次回TenKeyInputの中身を解説します。