커서 잠금(Cursor.lockState 사용) 및 전체화면 모드(Screen.fullScreen 사용)는 모두 개별 HTML5 API(Element.requestPointerLock 및 Element.requestFullscreen)를 사용하여 구현되는 Unity WebGL에서 지원됩니다.이는 Firefox 및 Chrome에서 지원됩니다.Safari에서는 현재 전체화면 및 커서 잠금을 사용할 수 없습니다.
보안 문제로 인해 브라우저에서는 마우스 클릭이나 키 누르기와 같이 사용자가 시작한 이벤트에 직접 반응하는 경우에만 커서를 잠그거나 전체화면 모드로 전환할 수 있습니다.Unity에는 별도의 이벤트와 렌더링 루프가 없기 때문에 브라우저가 Unity 스크립팅에서 발생한 전체화면 또는 커서 잠금 요청을 트리거한 이벤트에 대한 직접적인 리스폰스로 더 이상 인식하지 않을 때까지 이벤트 처리를 지연합니다.그 결과 Unity는 커서 잠금 또는 전체화면 요청을 트리거한 이벤트가 아닌 다음 사용자 시작 이벤트의 요청을 트리거합니다.
이러한 제약에도 불구하고 올바른 결과를 얻으려면 커서 잠금이나 전체화면 요청을 마우스나 키 누름 해제 이벤트가 아니라 누름 이벤트에서 트리거해야 합니다.이렇게 하면 해당 요청이 다음 사용자가 시작한 이벤트 시점까지 연기되더라도 사용자가 마우스나 키에서 손가락을 뗄 때 요청을 트리거할 수 있게 됩니다.
Unity의 UI.Button 컴포넌트를 사용하면 OnPointerDown
메서드를 오버라이드하는 Button
의 서브클래스를 만들어 원하는 동작을 구현할 수 있습니다.
브라우저는 전체화면 모드로 전환하거나 커서를 잠그기 전에 알림 메시지를 표시하거나 사용자에게 권한을 요청하는 프롬프트를 표시할 수 있습니다.