UE5 입력 내용을 듣다가, 궁금한 부분이 있어 질문드립니다.
772
작성한 질문수 6
안녕하세요, Part 1에 이어 Part 2 강의를 듣고 있는 문민철입니다.
입력 시스템 내용을 듣다가, 궁금한 부분이 있어 질문드립니다.
(어쩌면 본 강좌의 내용 외의 질문일 수도 있는데, 양해 부탁드립니다)
1. RTS와 같은 게임에서는 입력 처리를 Widget에서 처리하는 것이 효율적일 것으로 보입니다. (ex: 스타크래프트에서 Move 아이콘 클릭과 'M' 단축키 입력은 같은 동작을 수행)
1) Widget은 Actor도, Pawn도, Controller도 아닌 언리얼 오브젝트입니다. Widget이 사용자 입력을 어떻게 받아들이고, 처리하는지 궁금합니다.
2) Widget이 가질 수 있는 여러 가지 상태가 있을 수 있을텐데, (ex: overlay된다거나, visible이 아닌 hidden상태거나 등) 어떤 경우에 입력이 처리되고, 어떤 경우에 입력이 무시되는지 궁금합니다.
2. 언리얼엔진을 사용하다 보면, 이런 종류(1번 질문과 같은)의 디테일한 궁금함...은 계속해서 생길 것으로 보입니다. 실제로 내부 동작에 대한 디테일한 정보는 게임 개발에 필요한 아키텍처 설계를 위해 필수적인 부분일 것으로 판단됩니다. 특히 마이너한 기능들일수록, 참고할만한 자료들은 적어질 것으로 보이고요. (ex: 언리얼 엔진을 이용한 RTS 개발 등)
공식 문서에서 얻을 수 있는 자료 역시 한계가 있는 것으로 보이는데, 이런 '모르는 내용'이 있을 때 올바른 접근 방법을 추천해 주시면 감사하겠습니다.
감사합니다.
답변 1
1
네 Part1 완강 축하드립니다~
[1번 질문에 대한 답변]
입력의 흐름에 대해서는 플레이어 컨트롤러를 살펴보시면 됩니다.
FInputModeUIOnly, FInputModeGameOnly, FInputModeGameAndUI를 제공하는데, 각각은 UI에만 입력을 전달할지, 게임에만 전달할지, 둘 다 전달할지를 지정합니다.
그러면 뷰포트 최상단 위젯으로부터 계층구조에 따라 입력이 처리되는데, 질문주신 위젯의 상태는 기본적으로 UMG 컨트롤의 옵션 설정을 통해 처리방법이 결정됩니다. 만일 UI로만 작업해야 한다면 SetInputMode에 FInputModeUIOnly를 전달해서 게임뷰포트에 입력이 전달되지 않도록 설정할 수 있습니다. 다만 스타같은 경우 맵에 클릭해 이동하는 기능도 있어서 둘 다 전달해야 하지 않을까 생각되네요.
[2번 질문에 대한 답변]
언리얼 소스가 워낙 방대하기 때문에 원하는 정보를 얻는게 쉽진 않습니다. 다만 결국에는 소스코드가 가장 정확한 정답을 알려줍니다.
내부 구조를 알기 위해서는 탐색하려는 주제에 대한 적절한 키워드와 이와 관련된 함수를 찾는 것이 중요합니다.
예를 들어 앞서 설명한 입력 전달에 대한 분기 코드는 플레이어 컨트롤러가 담당하니 해당 클래스 소스를 살펴보면 됩니다.
그리고나서 이를 구현한 플레이어 컨트롤러의 SetInputMode 함수를 보면 어느정도 답이 나오는데, 게임 입력을 탐색하고 싶으면 UGameViewportClient 클래스를 검색하시고, UI쪽 입력을 탐색하고 싶다면 SViewport 클래스 소스로부터 실마리를 얻을 수 있습니다.
비주얼 스튜디오 기준 추천 단축키는 File In Files(Ctrl+Shift+F), F12, Ctrl+K-O 조합입니다.
오래전에 제작되었지만, 에픽게임즈가 제공하는 "전략 게임" 샘플도 한번 받아서 일부 참고해도 좋을 것 같습니다.
무한맵 제작과정중에 GetWorld 가 Nullptr 을 반환합니다.
0
48
2
12강 행동트리에서 질문이 있습니다.
0
52
1
위젯 사이즈랑 위치 질문드려요.
0
82
3
행동트리의 데코레이션 관련하여 질문이 있습니다.
0
94
3
VS 2026 의 문제일까요?
0
492
2
에셋참조 블루프린트질문
0
67
2
애님 몽타주 콤보 관련질문
0
70
2
ThirdPerson CDO 에러가 생깁니다.
0
96
3
캐릭터가 움직이지 않습니다.
0
184
4
쿠킹 폴더 지정시 , Item 이외에는 지정하지 않는지 궁금합니다.
0
62
2
TSoftObjectPtr 를 사용했음에도, 메모리에 로드 됩니다.
0
95
2
7강에 나오는 생성자에 대해서 궁금합니다.
0
79
2
6강을 마무리하며 트레이스 채널 을 이해하지 못했습니다.
0
73
2
3강을 마무리 하며, 카메라가 움직이지 않습니다.
0
71
2
Use Controller Rotation 옵션값이 궁금합니다.
0
84
2
3강 입력 시스템 적용 중, 5.6 버전은 입력 매팅이 2개 입니다.
0
66
2
PlayerController 에 대헤 제가 잘못 이해한 것 같습니다.
0
78
2
13강 UpdateStat 부분에서 문제를 겪고 있습니다.
0
64
2
BP_PlayerController의 CustomEvent노드 이유가 궁금합니다.
0
66
1
콤포넌트 포인터 선언시 TObjectPtr<>과 UStaticMeshComponent* 차이점
0
73
2
CharacterMovementComponent의 RotationRate관련해서 질문이 있습니다.
0
115
2
언리얼 공부방법에 대해 질문드립니다.
0
87
2
4강 에서 이상한 그림자가 남습니다.
0
48
1
2강에서 카메라 회전안되시는분 참고
2
92
2





