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. スクリーン キーボード上のシステムは、キーボードを表示し、入力が送信された後に、帯域幅消費型のビューを返す 2D セカンダリ XAML ビューを作成するため、Unity は、帯域幅消費型ビューの上部にオーバーレイにできません。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. ユーザーが原因でアプリのコードを呼び出すアクションを実行TouchScreenKeyboardThe user performs an action causing app code to call TouchScreenKeyboard
    • アプリの呼び出しの前に、アプリの一時停止状態の役目ですTouchScreenKeyboardThe 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. 送信されたテキストが表示されます、 TouchScreenKeyboardSubmitted text is available in the TouchScreenKeyboard

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

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

  • 単一行のテキスト ボックスSingle-line textbox
  • タイトルを含む単一行の textboxSingle-line textbox with title
  • 複数行テキスト ボックスMulti-line textbox
  • タイトルを含む複数行の textboxMulti-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". "XAML"を「UWP ビルドの種類」として"D3D"を選択するときにすることのトレードオフがあります。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 ストアSDKに設定されているユニバーサル 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. Build Settingsダイアログ ボックスで、をクリックして、プレーヤー設定しています. ボタンIn the Build Settings dialog, click the Player Settings... button
  4. 選択、 Windows Store 用の設定に タブ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. 確認Windows Holographic仮想現実 Sdk の一覧に表示されます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