Unity의 키보드 입력Keyboard input in Unity

네임 스페이스: unityengineNamespace: UnityEngine
유형: TouchScreenKeyboardType: 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는 사용할 수 있는 실제 키보드가 없을 때 키보드 입력을 허용 하기 위한 TouchScreenKeyboard 클래스를 제공 합니다.Unity provides the TouchScreenKeyboard class for accepting keyboard input when there's 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. 시스템의 화상 키보드는 대규모 보기 위에 오버레이를 사용할 수 없습니다.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. 사용자가 응용 프로그램 코드에서 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 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
    • 앱은 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"를 통해 "XAML"을 "UWP 빌드 형식"으로 선택 하는 경우에는 장단점이 있습니다.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. 렌더링 섹션에서 가상 현실 지원 확인란을 선택 하 여 새 가상 현실 장치 목록을 추가 합니다.In the Rendering section, check the Virtual Reality Supported checkbox to add a new Virtual Reality Devices list
  7. 가상 현실 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

키보드 입력을 요청 하는 이벤트가 발생 하는 경우 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");

형식화 된 콘텐츠 검색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

대규모 보기에서 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 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.