Version: Unity 6.0 (6000.0)
언어 : 한국어
WebGL의 내장된 리소스
웹 캔버스 크기 설정

웹에서의 입력

Unity 웹은 게임패드, 조이스틱, 터치스크린, 키보드, 움직임 센서와 같은 다양한 기기의 각종 입력 유형을 지원합니다.

게임패드 및 조이스틱 지원

웹은 게임패드의 다음 입력을 지원합니다.

웹은 HTML5 Gamepad API를 지원하는 브라우저용 조이스틱도 지원합니다.

일부 브라우저는 애플리케이션이 활성화된 상태에서 사용자가 기기와 상호 작용한 후에만 입력 기기에 대한 액세스를 허용합니다. 이는 사용자가 브라우저 핑거프린팅을 목적으로 연결된 디바이스를 사용하지 못하게 하는 보안 조치입니다. 따라서 Input.GetJoystickNames()를 호출하여 연결된 디바이스를 확인하기 전에 애플리케이션을 통해서 사용자에게 게임패드/조이스틱의 버튼을 누르도록 지시해야 합니다.

컨트롤러 매핑

기존 입력 시스템에 대한 웹 게임 컨트롤러 매핑은 W3 사양에 부합하며, 구체적인 버튼 매핑 레이아웃은 다음과 같습니다.

버튼 설명
buttons[0] 오른쪽 클러스터의 하단 버튼 = 엑스표(X)
buttons[1] 오른쪽 클러스터의 오른쪽 버튼 = 원형
buttons[2] 오른쪽 클러스터의 왼쪽 버튼 = 사각형
buttons[3] 오른쪽 클러스터의 상단 버튼 = 삼각형

참고: 웹은 W3 사양을 따르므로 다른 플랫폼과 일치하지 않을 수 있으며, Windows및 웹과 같은 여러 플랫폼을 동시에 타게팅할 경우에는 다른 접근 방식을 사용해야 합니다. 자세한 내용은 리매핑에 관한 W3 기술 자료를 참조하십시오.

터치 지원

Unity 웹은 터치를 지원하는 브라우저와 기기에서 Input.touches 및 기타 관련 API를 구현합니다. 기본적으로 모바일 기기는 사용자가__ UI__(사용자 인터페이스) 사용자가 애플리케이션과 상호 작용하도록 해 줍니다. Unity는 현재 3개의 UI 시스템을 지원합니다. 자세한 정보
See in Glossary
입력 필드에 텍스트를 입력할 수 있도록 터치 화면에 소프트 키보드를 표시합니다. 이 동작을 비활성화하려면 WebGLInput.mobileKeyboardSupport 프로퍼티를 사용하십시오.

키보드 입력 및 포커스 처리

기본적으로 Unity 웹은 웹 캔버스의 활성화 여부와는 관계없이 웹 페이지가 수신하는 모든 키보드 입력을 처리합니다. 이를 통해 사용자는 웹 캔버스를 클릭하지 않고서도 키보드 기반 애플리케이션을 사용할 수 있습니다.

아래에 설명된 대로 특정 키보드 입력에 적용되는 참고 사항은 다음과 같습니다.

키보드 입력 동작 설명
HTML 요소(예: 텍스트 필드) 키보드 입력을 수신해야 하는 웹 페이지에 텍스트 필드와 같은 HTML 요소를 추가하면 오류가 발생할 수 있습니다. Unity는 페이지의 나머지 부분이 입력 이벤트를 수신하기 전에 입력 이벤트를 먼저 소비합니다.
HTML 요소가 키보드 입력을 수신하게 하려면 WebGLInput.captureAllKeyboardInputfalse로 설정합니다. 이렇게 하면 웹 캔버스가 활성화된 경우에만 애플리케이션이 입력을 수신합니다.
Esc Safari와 같은 일부 브라우저는 웹 환경에서 Esc 키를 보호하므로 Esc 키를 눌러 전체 화면 모드로 전환하는 기능을 차단합니다. Google Chrome과 같은 다른 브라우저는 예측할 수 없는 동작을 할 수 있습니다. 브라우저가 전체 화면 모드에 있을 경우 사용자는 Esc 키를 사용해서만 전체 화면 모드를 종료할 수 있습니다. 브라우저 유형에 따라 Esc 키를 클릭하더라도 이벤트가 브라우저에서 애플리케이션으로 전달되지 않을 수 있습니다.
HideMobileInput TextMeshPro(TMP라고도 함) 입력 필드의 HideMobileInput 옵션은 웹 플랫폼에 영향을 미치지 않습니다. 브라우저에서 가상 키보드를 트리거하려면 텍스트 입력 필드가 필요하므로 이 옵션은 영향을 미치지 않습니다. 웹 플랫폼은 텍스트 입력 필드를 인스턴스화하여 Unity 플레이어가 텍스트 입력을 해야 할 때 가상 키보드를 트리거합니다. 텍스트 입력 필드는 다른 플랫폼과 마찬가지로 가상 키보드 위에 나타납니다. 가상 키보드는 모바일 텍스트 입력 필드에 의존하므로 웹 플랫폼에서 숨겨진 상로 표시할 수 없습니다.

모바일 센서 지원

터치를 지원하는 브라우저 및 모바일 기기에 대해 Unity 웹은 다음 센서를 지원합니다.

중요: 브라우저는 보안 컨텍스트에서만 센서 입력을 허용하므로, HTTPS를 통해 페이지를 제공해야 합니다. 유일한 예외는 개발 중에 사용할 수 있는 http://localhost입니다.

커서 잠금 지원

Unity 웹 플랫폼은 HTML5 API Element.requestPointerLock을 사용하는 커서 잠금을 지원합니다. 커서 잠금을 사용하면 마우스 커서가 게임 창 중앙에 고정됩니다. 잠긴 커서는 Unity에서 숨겨진 상태로 표시되며 마우스를 움직여도 이동하지 않습니다. 이는 일반적으로 마우스 커서를 사용하여 플레이어 각도 방향을 제어하는 1인칭 게임에 특히 유용합니다.

참고: 커서 잠금 지원은 브라우저에 따라 달라지므로 Element: requestPointerLock() 메서드에 대한 Mozilla 기술 자료를 참조하십시오.

커서 잠금 활성화

커서를 잠그려면 Cursor.lockState 프로퍼티를 사용하십시오. 예를 들어 사용자가 왼쪽 클릭할 경우 다음 코드는 커서를 잠금 상태로 전환합니다.

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        Cursor.lockState = CursorLockMode.Locked;
    }
}

커서 잠금은 사용자 상호작용을 통해 활성화되어야 합니다. 자세한 내용은 전체 화면 모드 및 커서 잠금에 대한 추가 고려 사항을 참조하십시오.

커서 잠금 비활성화

커서 잠금을 해제하려면 Esc 키를 누릅니다.

스티커 커서 잠금

stickyCursorLock 프로퍼티는 브라우저 동작과 관계없이 커서 잠금 모드를 유지하는 데 활용할 수 있어 1인칭 게임에 흔히 사용됩니다.

브라우저가 Unity 캔버스에서 커서 잠금을 해제(일반적으로 Esc 키를 사용)하더라도 Cursor.lockState 상태가 지속되도록 하려면 stickyCursorLock을 사용하십시오. 이 경우 캔버스가 다음에 다시 활성화되면 커서가 다시 잠깁니다.

따라서 WebGLInput._stickyCursorLocktrue로 설정하면 Unity 캔버스 HTML 요소가 커서의 잠금을 해제하더라도 Cursor.lockStateCursorLockMode.Locked 상태로 유지됩니다.

WebGLInput._stickyCursorLockfalse로 설정하면 다음이 발생합니다.

  • Cursor.lockState는 브라우저의 커서 잠금 상태와 동기화된 상태로 유지됩니다.

  • 사용자가 Esc 키를 눌러 캔버스 커서 잠금을 취소하면 Cursor.lockStateCursorLockMode.None으로 변경됩니다.

참고: 웹에서 stickyCursorLock은 기본적으로 true로 설정됩니다.

전체 화면 모드

게임에서 전체 화면 모드를 사용하여 다음을 수행할 수 있습니다.

  • 게임에서 전체 화면을 사용합니다.

  • 주소 표시줄 및 탭과 같은 브라우저 사용자 인터페이스(UI) 요소를 숨깁니다.

  • 제목 표시줄 및 툴바와 같은 Unity 플레이어 UI 요소를 숨깁니다.

Unity 웹 플랫폼은 HTML5 API Element.requestFullscreen를 사용하는 전체 화면 모드를 지원합니다.

참고: 전체 화면 모드 지원은 브라우저에 따라 달라지므로 Element: requestFullscreen() 메서드에 대한 Mozilla 기술 자료를 참조하십시오.

웹에서 전체 화면 모드 활성화

전체 화면 모드를 활성화하려면 Screen.fullScreen 프로퍼티를 사용하십시오. 예를 들어 사용자가 F 키를 누를 경우 다음 코드는 게임을 전체 화면 모드로 전환합니다.


void Update()
{
    if (Input.GetKeyDown(KeyCode.F))
    {
        Screen.fullScreen = true;
    }
}

참고: Screen.fullScreen 프로퍼티는 기본적으로 false로 설정됩니다.

전체 화면 모드는 사용자 상호작을 통해 활성화되어야 합니다. 자세한 내용은 전체 화면 모드 및 커서 잠금에 대한 추가 고려 사항을 참조하십시오.

전체 화면 모드 종료

전체 화면 모드를 종료하려면 Esc 키를 다시 누르거나 마우스 포인터를 화면 상단으로 가져가 주소 표시줄과 탭에 접근할 수 있습니다.

전체 화면 모드 및 커서 잠금에 대한 추가 고려 사항

보안상의 이유로 브라우저에서는 마우스 클릭 및 키 누름과 같이 사용자가 시작한 이벤트가 발생한 이후에만 커서를 잠그고 전체 화면 모드를 활성화할 수 있습니다.

Unity는 별도의 이벤트와 렌더링 루프를 지원하지 않습니다. 따라서 브라우저가 Unity 스크립팅에서 발생한 전체 화면 또는 커서 잠금 요청을 해당 요청을 발생시킨 이벤트에 대한 직접적인 응답으로 인식하지 않게 될 때까지 이벤트 처리는 연기됩니다.

따라서 Unity는 커서 잠금이나 전체 화면 요청을 트리거한 이벤트 대신, 사용자가 그 다음으로 시작한 이벤트에 대한 요청을 트리거합니다.

커서 잠금 또는 전체 화면 모드를 더욱 효과적으로 활성화하려면 마우스/키 업 이벤트 대신 마우스/키 다운 이벤트를 사용하여 응답을 트리거하십시오. 이렇게 하면 사용자가 시작한 이벤트가 먼저 발생하지 않더라도 연기된 요청이 해당하는 마우스/키보드 업 이벤트에 의해 반드시 실행됩니다.

Unity의 UI.Button 컴포넌트를 사용해 OnPointerDown 메서드를 오버라이드하는 Button의 서브 클래스를 생성하여 원하는 동작을 구현할 수도 있습니다.

참고: 일부 브라우저는 전체 화면 모드로 전환하거나 커서를 잠그기 전에 알림 메시지를 표시하거나 사용자에게 권한을 요청하는 프롬프트를 표시할 수 있습니다.

추가 리소스

WebGL의 내장된 리소스
웹 캔버스 크기 설정