Entrada desde teclado en UnityKeyboard input in Unity

Espacio de nombres: UnityEngineNamespace: UnityEngine
Tipo: TouchScreenKeyboardType: TouchScreenKeyboard

Aunque HoloLens admite muchas formas de entrada, incluidos los teclados Bluetooth, la mayoría de las aplicaciones no puede suponer que todos los usuarios tendrán un teclado físico disponible.While HoloLens supports many forms of input including Bluetooth keyboards, most applications can't assume that all users will have a physical keyboard available. Si la aplicación requiere una entrada de texto, se debe proporcionar alguna forma de teclado en pantalla.If your application requires text input, some form of on-screen keyboard should be provided.

Unity proporciona la clase TouchScreenKeyboard para aceptar la entrada de teclado cuando no hay ningún teclado físico disponible.Unity provides the TouchScreenKeyboard class for accepting keyboard input when there's no physical keyboard available.

Comportamiento del teclado del sistema HoloLens en UnityHoloLens system keyboard behavior in Unity

En HoloLens, el TouchScreenKeyboard aprovecha el teclado en pantalla del sistema.On HoloLens, the TouchScreenKeyboard leverages the system's on-screen keyboard. El teclado en pantalla del sistema no se puede superponer sobre una vista volumétrica.The system's on-screen keyboard can't overlay on top of a volumetric view. Unity tiene que crear una vista XAML 2D secundaria para mostrar el teclado y volver a la vista volumétrica una vez que se ha enviado la entrada.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. El flujo de usuario es similar al siguiente:The user flow goes like this:

  1. El usuario realiza una acción que hace que el código de la aplicación llame a TouchScreenKeyboardThe user performs an action causing app code to call TouchScreenKeyboard
    • La aplicación es responsable de pausar el estado de la aplicación antes de llamar a TouchScreenKeyboardThe app is responsible for pausing app state before calling TouchScreenKeyboard
    • La aplicación puede finalizar antes de volver a cambiar a la vista volumétrica.The app may terminate before ever switching back to the volumetric view
  2. Unity cambia a una vista XAML 2D, que se coloca en el mundo.Unity switches to a 2D XAML view, which is autoplaced in the world
  3. El usuario escribe texto mediante el teclado del sistema y lo envía o cancela.The user enters text using the system keyboard and submits or cancels
  4. Unity vuelve a cambiar a la vista volumétricaUnity switches back to the volumetric view
    • La aplicación es responsable de reanudar el estado de la aplicación cuando se realiza la TouchScreenKeyboardThe app is responsible for resuming app state when the TouchScreenKeyboard is done
  5. El texto enviado está disponible en TouchScreenKeyboardSubmitted text is available in the TouchScreenKeyboard

Vistas del teclado disponiblesAvailable keyboard views

Hay seis vistas de teclado diferentes disponibles:There are six different keyboard views available:

  • Cuadro de texto de una sola líneaSingle-line textbox
  • Cuadro de texto de una sola línea con títuloSingle-line textbox with title
  • Cuadro de texto de varias líneasMulti-line textbox
  • Cuadro de texto de varias líneas con títuloMulti-line textbox with title
  • Cuadro de contraseña de una sola líneaSingle-line password box
  • Cuadro de contraseña de una sola línea con títuloSingle-line password box with title

Cómo habilitar el teclado del sistema en UnityHow to enable the system keyboard in Unity

El teclado del sistema HoloLens solo está disponible para las aplicaciones de Unity que se exportan con el "tipo de compilación de UWP" establecido en "XAML".The HoloLens system keyboard is only available to Unity applications that are exported with the "UWP Build Type" set to "XAML". Hay inconvenientes que debe realizar al elegir "XAML" como "tipo de compilación de UWP" sobre "D3D".There are tradeoffs you make when you choose "XAML" as the "UWP Build Type" over "D3D". Si no está familiarizado con esos inconvenientes, puede que desee explorar una solución de entrada alternativa al teclado del sistema.If you aren't comfortable with those tradeoffs, you may wish to explore an alternative input solution to the system keyboard.

  1. Abra el menú archivo y seleccione configuración de compilación.. .Open the File menu and select Build Settings...
  2. Asegúrese de que la plataforma esté establecida en tienda Windows, que el SDK esté establecido en universal 10 y establezca el tipo de compilación de UWP en 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. En el cuadro de diálogo configuración de compilación , seleccione el botón configuración del reproductor...In the Build Settings dialog, select the Player Settings... button
  4. Seleccionar la configuración de la pestaña de la tienda WindowsSelect the Settings for Windows Store tab
  5. Expandir el grupo otras configuracionesExpand the Other Settings group
  6. En la sección representación , active la casilla compatibilidad con realidad virtual para agregar una nueva lista de dispositivos de realidad virtualIn the Rendering section, check the Virtual Reality Supported checkbox to add a new Virtual Reality Devices list
  7. Asegúrese de que Windows Holographic aparece en la lista de SDK de realidad virtualEnsure Windows Holographic appears in the list of Virtual Reality SDKs

Nota

Si no marca la compilación como realidad virtual compatible con el dispositivo HoloLens, el proyecto se exportará como una aplicación XAML 2D.If you don't mark the build as Virtual Reality Supported with the HoloLens device, the project will export as a 2D XAML app.

Uso del teclado del sistema en la aplicación de UnityUsing the system keyboard in your Unity app

Declarar el tecladoDeclare the keyboard

En la clase, declare una variable para almacenar el TouchScreenKeyboard y una variable que contenga la cadena que devuelve el teclado.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 = "";

Invocar el tecladoInvoke the keyboard

Cuando se produce un evento que solicita una entrada de teclado, llame a una de estas funciones según el tipo de entrada que desee mediante el título en el parámetro textPlaceholder.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");

Recuperar contenido con tipoRetrieve typed contents

En el bucle de actualización, compruebe si el teclado ha recibido una nueva entrada y almacénela para su uso en otra parte.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;
       }
}

Opciones de teclado alternativasAlternative keyboard options

Sabemos que el desactivador de una vista volumétrica en una vista 2D no es la manera ideal de obtener entradas de texto del usuario.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.

Las alternativas actuales para aprovechar el teclado del sistema mediante Unity incluyen:The current alternatives to leveraging the system keyboard through Unity include:

  • Usar el dictado de voz para la entrada (Nota: a menudo esto es propenso a errores para las palabras que no se encuentran en el Diccionario y no es adecuada para la entrada de contraseña)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)
  • Crear un teclado que funcione en la vista exclusiva de aplicacionesCreate a keyboard that works in your applications exclusive view

Siguiente punto de control de desarrolloNext Development Checkpoint

Si está siguiendo el viaje de desarrollo de Unity que hemos diseñado, está a la mitad de explorar las API y funcionalidades de la plataforma de realidad mixta.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. Desde aquí, puede continuar con cualquier tema o ir directamente a la implementación de la aplicación en un dispositivo o emulador.From here, you can continue to any topic or jump directly to deploying your app on a device or emulator.