Unity でのキーボード入力Keyboard input in Unity

名前空間: unityengineNamespace: UnityEngine
: TouchScreenKeyboardType: TouchScreenKeyboard

HoloLens では、Bluetooth キーボードを含む多くの形式の入力がサポートされますが、ほとんどのアプリケーションでは、すべてのユーザーが物理キーボードを使用できると想定することはできません。While HoloLens supports many forms of input including Bluetooth keyboards, most applications cannot assume that all users will have a physical keyboard available. アプリケーションでテキスト入力が必要な場合は、スクリーンキーボードの何らかの形式を指定する必要があります。If your application requires text input, some form of on screen keyboard should be provided.

Unity には、使用可能な物理キーボードがない場合にキーボード入力を受け入れるための TouchScreenKeyboard クラスが用意されています。Unity provides the TouchScreenKeyboard class for accepting keyboard input when there is no physical keyboard available.

Unity での HoloLens システムキーボード動作HoloLens system keyboard behavior in Unity

HoloLens では、 TouchScreenKeyboardはシステムのスクリーンキーボードを活用します。On HoloLens, the TouchScreenKeyboard leverages the system's on screen keyboard. システムのスクリーンキーボードを容量ビューの上に重ねて表示することはできません。そのため、Unity では、入力が送信された後にキーボードを表示するセカンダリ 2D XAML ビューを作成してから容量ビューに戻る必要があります。The system's on screen keyboard is unable to overlay on top of a volumetric view so Unity has to create a secondary 2D XAML view to show the keyboard then return back to the volumetric view once input has been submitted. ユーザーフローは次のようになります。The user flow goes like this:

  1. ユーザーがアクションを実行して、アプリコードがTouchScreenKeyboardを呼び出すようにします。The user performs an action causing app code to call TouchScreenKeyboard
    • アプリは、 TouchScreenKeyboardを呼び出す前にアプリの状態を一時停止します。The app is responsible for pausing app state before calling TouchScreenKeyboard
    • 容量ビューに切り替える前に、アプリを終了することがありますThe app may terminate before ever switching back to the volumetric view
  2. Unity は、世界中に自動的に配置される 2D XAML ビューに切り替えます。Unity switches to a 2D XAML view which is auto-placed in the world
  3. ユーザーはシステムキーボードを使用してテキストを入力し、送信またはキャンセルします。The user enters text using the system keyboard and submits or cancels
  4. Unity は容量ビューに戻ります。Unity switches back to the volumetric view
    • TouchScreenKeyboardが完了すると、アプリはアプリの状態を再開する役割を担います。The app is responsible for resuming app state when the TouchScreenKeyboard is done
  5. 送信されたテキストは、 TouchScreenKeyboardで入手できます。Submitted text is available in the TouchScreenKeyboard

使用可能なキーボードビューAvailable keyboard views

次の6つの異なるキーボードビューを使用できます。There are six different keyboard views available:

  • 単一行のテキストボックスSingle-line textbox
  • タイトル付きの単一行テキストボックスSingle-line textbox with title
  • 複数行のテキストボックスMulti-line textbox
  • タイトルを含む複数行のテキストボックスMulti-line textbox with title
  • 単一行パスワードボックスSingle-line password box
  • タイトル付きの単一行パスワードボックスSingle-line password box with title

Unity でシステムキーボードを有効にする方法How to enable the system keyboard in Unity

HoloLens システムキーボードは、"UWP ビルドの種類" を "XAML" に設定してエクスポートされた Unity アプリケーションに対してのみ使用できます。The HoloLens system keyboard is only available to Unity applications that are exported with the "UWP Build Type" set to "XAML". "D3D" で "UWP ビルドの種類" として "XAML" を選択すると、トレードオフが発生します。There are tradeoffs you make when you choose "XAML" as the "UWP Build Type" over "D3D". これらのトレードオフに慣れていない場合は、システムキーボードの代替入力ソリューションを調べることをお勧めします。If you aren't comfortable with those tradeoffs, you may wish to explore an alternative input solution to the system keyboard.

  1. [ファイル] メニューを開き、 [ビルドの設定] を選択します。Open the File menu and select Build Settings...
  2. プラットフォームWindows ストアに設定されていること、 SDKUniversal 10に設定されていること、 UWP ビルドの種類XAMLに設定していることを確認します。Ensure the Platform is set to Windows Store, the SDK is set to Universal 10, and set the UWP Build Type to XAML.
  3. [ビルドの設定] ダイアログボックスで、 [プレーヤーの設定...] ボタンをクリックします。In the Build Settings dialog, click the Player Settings... button
  4. [Windows ストアの設定] タブを選択します。Select the Settings for Windows Store tab
  5. [その他の設定] グループを展開します。Expand the Other Settings group
  6. [表示] セクションで、 [サポートされている仮想現実] チェックボックスをオンにして、新しい仮想現実デバイスの一覧を追加します。In the Rendering section, check the Virtual Reality Supported checkbox to add a new Virtual Reality Devices list
  7. Virtual Reality Sdk の一覧に [Windows Holographic] が表示されていることを確認します。Ensure Windows Holographic appears in the list of Virtual Reality SDKs

注意

HoloLens デバイスでサポートされている仮想現実としてビルドをマークしない場合、プロジェクトは 2D XAML アプリとしてエクスポートされます。If you don't mark the build as Virtual Reality Supported with the HoloLens device, the project will export as a 2D XAML app.

Unity アプリでのシステムキーボードの使用Using the system keyboard in your Unity app

キーボードを宣言するDeclare the keyboard

クラスで、 TouchScreenKeyboardと、キーボードが返す文字列を保持する変数を格納する変数を宣言します。In the class, declare a variable to store the TouchScreenKeyboard and a variable to hold the string the keyboard returns.

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

キーボードを呼び出すInvoke the keyboard

キーボード入力を要求するイベントが発生したときに、必要な入力の種類に応じて、これらの関数のいずれかを呼び出します。When an event occurs requesting keyboard input, call one of these functions depending upon the type of input desired. タイトルは textPlaceholder パラメーターで指定されていることに注意してください。Note that the title is specified in the textPlaceholder parameter.

// Single-line textbox
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, false, false);

// Single-line textbox with title
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, false, false, "Single-line title");

// Multi-line textbox
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, true, false, false);

// Multi-line textbox with title
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, true, false, false, "Multi-line Title");

// Single-line password box
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true, false);

// Single-line password box with title
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true, false, "Secure Single-line Title");

型指定されたコンテンツの取得Retrieve typed contents

Update ループで、キーボードが新しい入力を受け取ったかどうかを確認し、別の場所で使用するために保存します。In the update loop, check if the keyboard received new input and store it for use elsewhere.

if (TouchScreenKeyboard.visible == false && keyboard != null)
{
       if (keyboard.done == true)
       {
           keyboardText = keyboard.text;
           keyboard = null;
       }
}

代替キーボードオプションAlternative keyboard options

容量ビューから2D ビューへの切り替えは、ユーザーからのテキスト入力を取得するのに最適な方法ではないことを理解しています。We understand that switching out of a volumetric view into a 2D view isn't the ideal way to get text input from the user.

Unity を通じてシステムキーボードを利用するための現在の代替手段は次のとおりです。The current alternatives to leveraging the system keyboard through Unity include:

  • 入力に音声ディクテーションを使用する (注:辞書に見つからず、パスワード入力に適していない単語に対してはエラーが発生する可能性があります)Using speech dictation for input (Note: this is often error prone for words not found in the dictionary and is not suitable for password entry)
  • アプリケーションの排他ビューで動作するキーボードを作成するCreate a keyboard that works in your applications exclusive view