[UE4] 입력 이벤트 처리 및 흐름

1891 단어 위 4UnrealEngine4
대상 Ver: UE4.25.0

컨트롤러나 터치 조작 등의 입력의 복잡성을 명확하게 해, 게임의 내용에 따라 커스터마이즈 하는데 도움이 되는 기사입니다.

1. 외부 입력에서 감지까지



컨트롤러, 키보드, 마우스, 터치 등의 하드웨어 이벤트를 검출하고 나서 최초로 입력을 받아들이는 개소까지의 개략도가 이하와 같습니다. HoloLens나 Oculus 컨트롤러, 아케이드 컨트롤러 등도 이러한 입력을 통해 통지되므로, 어떤 Interface를 이용하고 있는지 모르는 경우는 SlateApplication에서 이벤트를 감시하면 알기 쉽습니다. 콘솔 기기의 컨트롤러 이벤트 등도 같은 입력 인터페이스를 이용합니다.



[포인트]
・유저 입력은 각 InputInterface, Controller로 감시되고 있어 입력을 검출하면 FSlateApplication에 통지된다
· 예를 들어 컨트롤러의 입력은 각 인터페이스의 SendControllerEvents () 내에서 감지하고 통지합니다.
・각 인터페이스는 컨트롤러를 최대 4개를 감시하고, 접속된 순서에 0,1,2...과 ControllerId가 할당된다
· 각 플레이어는 기본적으로 ControllerId와 일치하는 컨트롤러를 사용합니다.
· 즉, 첫 번째 플레이어 (PlayerId : 0)는 처음에 연결된 컨트롤러 (ControllerId : 0)의 입력으로 작동합니다.
· 각 디바이스간에 ControllerId를 상호 감시하거나 배타 제어를 실시하지 않는다
· 즉 XInput과 RawInput 콘 각 1개씩을 같은 PC에 접속했을 경우, 최초의 플레이어는 어느 쪽의 입력도 받아들인다
・키보드/마우스는 접속마다 ControllerId는 할당할 수 없다

2. 검출에서 통지까지



입력을 받고 나서 게임측에 입력을 끌어들여 무언가의 이벤트가 발생하기까지의 흐름의 개략도가 아래와 같이 됩니다.



[포인트]
· 입력은 SlateApplication에서 순서대로 통지합니다.
・뷰포트에 포커스 하고 있는 경우는 게임내에 처리를 흘려 들어가는 왼쪽의 루트를 통과한다
・입력을 어딘가에서 블로킹하거나, 복수의 입력에 분배할 수도 있다
・버튼 누르기나 텍스트 입력 등 주로 UI의 조작은 오른쪽의 루트를 통과해
・UI 네비게이션의 조작등도 이쪽
・게임측으로부터 입력을 검출해 무언가를 하고 싶은 경우는 InputProcessor나 GameViewportClient의 커스텀 클래스를 작성한다
· 이하의 블로그는 커스텀 InputProcessor 클래스를 작성하는 참고가 됩니다
쿠이 프로그래머 메모양:IInputProcessor에 의한 키 입력 처리에 대해서

좋은 웹페이지 즐겨찾기