2026-04-09(목) 언리얼C++ 예외처리, 트러블슈팅

조범근·2026년 4월 9일

TIL

목록 보기
40/81

C++ Week 7

계속 언리얼 C++강의를 보면서 if문의 중첩으로 예외처리를 해주는 모습이 처음에는 벽처럼 다가왔지만 보다보니까 큰 흐름을 알게 된것 같다.
World -> GameState -> Controller -> Widget 이 순으로 예외처리를 하는데

내 클래스 내부 물건이 아닌 빌려 쓰는 객체이기 때문에 부모인스턴스가 자식의 모양을 알아야지 사용할 수 있다는 것이다.
또 C++에서 배운 내용이 없었으면 이해하기도 어려웠고 개념에 개념을 더한 느낌으로 이해해야해서 어려웠을 것 같다. C++을 하지말고 언리얼C++먼저 배울걸이라는 생각도 했는데 무조건 순서대로 하는게 좋은 것같다.

Study

언리얼C++ 기초, 알고리즘 2문제


Today I Learned


Unreal C++

월드 단위와 인스턴스 단위의 구분

월드 단위 (Cast, GetWorld): "현재 이 맵에 이 신분이 존재하는가?"를 묻는 거시적 확인.

인스턴스 단위 (Pointer Check): "내가 만든 도구가 아직 내 메모리에 살아있는가?"를 묻는 미시적 확인.

결구 모든 if문은 "내가 지금 이 객체에 명령을 내릴 자격(주소)이 있는가?"를 검증하는 최소한의 안전장치다.

트러블 슈팅

Super::BeginPlay()를 하지않는다면 어떻게 될까

이것저것 만져보다가 Super::beginPlay();를 지워 버린 것 같다.
그런데 참 신기했던게 PlayerController클래스에서 빼먹었었는데, 다른 기능은 다 작동하고 키보드만 입력이 안 되는 것이였다.
뭔가이상했다 키보드 매핑이랑 마우스 매핑이랑 같이 했는데 그럼 당연히 키보드랑 마우스 둘 다 작동하지않아야 정상이다.

입력시스템(Enhanced Input)의 초기화 시점은 보통 BeginPlay 시점에 AddMappingContext를 통해 활성화된다.
Super::BeginPlay()를 호출하지 않으면, 부모 클래스(APlayerController)가 내부적으로 수행해야 할 입력처리기 설정 및 초기화 로직이 실행되지 안흔다.
즉, 코드로 작성한 "키보드 매핑 데이터"를 엔진의 실제 입력 처리 루프에 등록하는 과정이 누락된 것

그렇다면 마우스가 작동했던 이유는 무엇일까.
마우스가 작동했던 이유는 마우스 커서 표시나 기본 시점 회전이 입력 시스템과는 별개의 시스템을 통하는 경우가 많기 때문이다.

Start 버튼과 레이어

Start 버튼을눌러야 다음단계로 가는데 레이어가 쌓여서 Start버튼을 누를 수가 없던 것이였다.
Start를 맨앞으로 꺼내줘서 해결.

0개의 댓글