夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

HoloLensで使えるオリジナルのUIを作成する  テンキー その4 スクリプト

本日はオリジナルのUI枠です。

本ブログではHoloLensで使用するためのオリジナルのUIを作成してGitHubで公開しています。

github.com

アプリケーションでテンキーを使用したかったので簡単に作成しました。

その1はテンキーのレイアウトとアイコンを作成しました。

redhologerbera.hatenablog.com

その2はMRTKのバージョン2.4から導入された機能のIconSetを作成しました。

redhologerbera.hatenablog.com

前回でテンキーの大まかな形ができたので今回は機能を作成します。

スクリプト

今回以下のようなスクリプトを作成しました。

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]コンポーネントEventsButton Pressed()に新しいイベントを作成してTenKeyオブジェクトをイベントに指定します。

f:id:Holomoto-Sumire:20200630095241j:plain

呼び出す関数に[KeyInput]を指定します。

最後に引数で各キーの値に相当するものを入力します。

〇入力フィールド

キーを入力した際に表示する先はTenKeyInputコンポーネントTenKeyevent(String)に設定します。

f:id:Holomoto-Sumire:20200630095647j:plain

通常のUnityEventは動的に関数の引数を指定することはできませんが、このTenKeyevent(String)では動的にString型が引数として渡されるようになっています。

Text(TMP)を作成し、TenKeyInputのTenKeyevent(String)に指定します。

f:id:Holomoto-Sumire:20200630100103j:plain

実行しHandTrackingの指でテンキーを叩くとテキストに入力した文字が表示されるようになります。

f:id:Holomoto-Sumire:20200630100439g:plain

以上でテンキーの基本形が完成しました。

次回TenKeyInputの中身を解説します。