Unity でのキーボード入力

名前空間:UnityEngine.XR
: TouchScreenKeyboard

HoloLens は Bluetooth キーボードを含む多くの入力形式をサポートしていますが、ほとんどのアプリケーションでは、すべてのユーザーが物理キーボードを使用できると想定することはできません。 アプリケーションでテキスト入力が必要な場合は、何らかの形式のスクリーン キーボードを提供する必要があります。

Unity では、使用可能な物理キーボードがないときにキーボード入力を受け入れるための TouchScreenKeyboard クラスが用意されています。

Unity での HoloLens システム キーボードの動作

HoloLens では、TouchScreenKeyboard はシステムのスクリーン キーボードを利用して、MR アプリケーションのボリューム ビュー上に直接オーバーレイします。 このエクスペリエンスは、HoloLens の組み込みアプリでキーボードを使用するのと似ています。 システム キーボードがターゲット プラットフォームの機能に従って動作することに注意してください。たとえば、HoloLens 2 上のキーボードが直接のハンド対話をサポートするのに対して、HoloLens (第 1 世代) 上のキーボードは GGV (視線入力、ジェスチャ、音声) をサポートします。 また、システム キーボードは、エディターから HoloLens に Unity Remote を実行しているときには表示されません。

Unity アプリでのシステム キーボードの使用

キーボードを宣言する

クラスで、TouchScreenKeyboard と、キーボードが返す文字列を保持する変数を格納する変数を宣言します。

UnityEngine.TouchScreenKeyboard keyboard;
public static string keyboardText = "";

キーボードを呼び出す

キーボード入力を要求するイベントが発生したときに、次を使用してキーボードを表示します。

keyboard = TouchScreenKeyboard.Open("text to edit");

TouchScreenKeyboard.Open 関数に渡された追加のパラメーターを使用して、キーボードの動作 (プレースホルダー テキストの設定、オートコレクトのサポートなど) を制御することができます。 パラメーターの完全な一覧については、Unity のドキュメントを参照してください。

型指定されたコンテンツを取得する

コンテンツは、keyboard.text を呼び出すことによって簡単に取得できます。 フレームごとにコンテンツを取得したり、キーボードを閉じたときにのみコンテンツを取得したりすることができます。

keyboardText = keyboard.text;

代替キーボード オプション

TouchScreenKeyboard クラスを直接使用するだけでなく、Unity の UI 入力フィールドまたは TextMeshPro 入力フィールドを使用してユーザー入力を取得することもできます。 また、MRTKHandInteractionExamples シーンにある TouchScreenKeyboard に基づく実装もあります (キーボード操作のサンプルは左側にあります)。

次の開発チェックポイント

用意されている Unity 開発体験に従っている場合、Mixed Reality プラットフォームの機能と API を探索している段階にいます。 ここから、任意のトピックに進むことも、デバイスまたはエミュレーターへのアプリのデプロイ操作に直接移動することもできます。