Ввод с клавиатуры в UnityKeyboard input in Unity

Пространство имен: UnityEngineNamespace: UnityEngine
Тип: таучскринкэйбоардType: TouchScreenKeyboard

Хотя HoloLens поддерживает многие виды входных данных, включая клавиатуры Bluetooth, большинство приложений не может предположить, что у всех пользователей есть доступная физическая клавиатура.While HoloLens supports many forms of input including Bluetooth keyboards, most applications can't 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 предоставляет класс таучскринкэйбоард для приема ввода с клавиатуры при отсутствии доступной физической клавиатуры.Unity provides the TouchScreenKeyboard class for accepting keyboard input when there's no physical keyboard available.

Поведение системной клавиатуры HoloLens в UnityHoloLens system keyboard behavior in Unity

В HoloLens таучскринкэйбоард использует экранную клавиатуру системы.On HoloLens, the TouchScreenKeyboard leverages the system's on-screen keyboard. Экранная клавиатура системы не может накладываться поверх представления объемные.The system's on-screen keyboard can't overlay on top of a volumetric view. Unity должен создать вторичное 2D-представление XAML, чтобы Показать клавиатуру, а затем вернуться к представлению объемные после отправки входных данных.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. Пользователь выполняет действие, вызывающее вызов таучскринкэйбоард кодом приложения.The user performs an action causing app code to call 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 autoplaced 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
    • Приложение отвечает за возобновление состояния приложения после завершения таучскринкэйбоардThe app is responsible for resuming app state when the TouchScreenKeyboard is done
  5. Отправленный текст доступен в таучскринкэйбоардSubmitted text is available in the TouchScreenKeyboard

Доступные представления клавиатурыAvailable keyboard views

Доступно шесть различных представлений клавиатуры: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

Как включить системную клавиатуру в UnityHow to enable the system keyboard in Unity

Системная клавиатура HoloLens доступна только для приложений Unity, которые экспортируются с параметром "тип сборки UWP", имеющим значение "XAML".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. В диалоговом окне параметры сборки нажмите кнопку Параметры проигрывателя...In the Build Settings dialog, select the Player Settings... button
  4. Перейдите на вкладку параметры для Магазина Windows .Select the Settings for Windows Store tab
  5. Разверните группу другие параметры .Expand the Other Settings group
  6. В разделе " Подготовка " установите флажок " Virtual Reality Supported ", чтобы добавить новый список устройств виртуальной реальности .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.

Использование системной клавиатуры в приложении UnityUsing the system keyboard in your Unity app

Объявление клавиатурыDeclare the keyboard

В классе объявите переменную для хранения таучскринкэйбоард и переменную для хранения строки, возвращаемой клавиатурой.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 on the type of input you want using the title 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

В цикле обновления проверьте, получил ли клавиатура новые входные данные, и сохраните их для использования в других местах.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.status == TouchScreenKeyboard.Status.Done)
       {
           keyboardText = keyboard.text;
           keyboard = null;
       }
}

Альтернативные параметры клавиатурыAlternative keyboard options

Мы понимаем, что переключение объемные представления в двухмерную представление не является идеальным способом получения текстового ввода от пользователя.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 isn't suitable for password entry)
  • Создание клавиатуры, работающей в монопольном представлении приложенийCreate a keyboard that works in your applications exclusive view

Следующий этап разработкиNext Development Checkpoint

Если вы подготовились к расположению разработки Unity, мы собрались изучить возможности и API платформы смешанной реальности.If you're following the Unity development journey we've laid out, you're in the midst of exploring the Mixed Reality platform capabilities and APIs. Здесь можно перейти к любому разделу или перейти непосредственно к развертыванию приложения на устройстве или в эмуляторе.From here, you can continue to any topic or jump directly to deploying your app on a device or emulator.