本日はOsaka HoloLens Hackathon 2022二日目の記事です。
11日からOsaka HoloLens Hackathon2022が開催されています。
筆者は指文字のアイデアで参加しています。
今回は指文字のために日本語のキーボードを作成します。
〇キーボードの作成
MRTKではアプリ内で使用できるキーボードが提供されています。
しかし今回はあいうえおの日本語が入力できるキーボードを使用したいです。
指文字自体はアルファベットもあり、海外でも使用することができますが、今回の最小構成では日本語のみを想定しています。そのため日本語のみが使用できるキーボードを新規作成します。
ベースには以前作成したテンキーを使用します。
①次のスクリプトを作成します。
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using TMPro; public class JapaneeseKeyBoard : MonoBehaviour { [Serializable] public class MyEvemt :UnityEvent<string> {} [SerializeField] private MyEvemt _Keyevent; private string _Field; [SerializeField] private TextMeshPro _text; public void KeyInput(string number) { _Field += number; _Keyevent.Invoke(_Field); } public void BackSpace() { int _Dsize = _Field.Length-1; Debug.Log(_Field); Debug.Log(_Dsize); _Field = _Field.Remove(_Dsize, 1); _text.text = _Field; } }
②シーンにMRTKで提供されているボタンプレファブを配置します。
今回は[PressableButtonHoloLens2Circular_32x32]を使用しています。
③[PressableButtonHoloLens2Circular_32x32]のインスペクターウィンドウから[Button Config Helper]コンポーネントの[Enable Main Lavel]と[Enable See it and Say it Lavel]のチェックを外します。
これによってボタンがアイコンのみになります。
MRTKのボタンではIconSetを作成することで任意のアイコンを使用することができますが、作業の都合でアイコンは一度飛ばします。
④[JapaneeseKeyBoard]コンポーネントをボタンにアタッチします。
⑤シーンにTextMeshProの3Dテキストを配置し、[JapaneeseKeyBoard]コンポーネントの[KeyEvent]にアタッチし、Functionは[TextMeshPro.Text]を指定します。
⑥[Button Config Helper]コンポーネントの[Basic Events]にイベントを加え[JapaneeseKeyBoard]コンポーネントをアタッチし関数を[JapaneeseKeyBoard.KeyInput]を指定します。
また引数にはひらがなを入力します。
以上でボタンを押すとTextMeshProのフィールドにひらがなが入力されるようになります。
しかしデバッグをすると文字化けしてしまいます。
これはTextMeshProで使用しているフォントが日本語に対応していないためです。日本語に対応する別のフォントを入れる必要があります。
〇日本語のフォントの導入
今回はGoogle fontから以下のフォントを使用します。
①Unityワールドメニューから[Windows]→[TextMeshPro]→[Font Assets Creater]を開きます。
②[Sauce font file]にダウンロードしたフォントファイルをアタッチします。
③設定を画像のように指定します。
④[Custom Charactor List]には次のGithubからテキストをコピーして貼り付けます。
⑤作成したフォントアセットを保存しすでにあるテキストのFontAssetsへ入れ替えます。
以上で日本語が表示できるようになりました。