0. 개요
어제 수업을 다 듣고, 새벽 4시까지 이전 프로젝트들이나 사진 같은 파일들을 정리하고, 노트북을 초기화 했다..
4시보다 더 늦어지면 오늘 너무 힘들것 같아서 VS, Rider, Unreal을 설치하고 바로 잤는데, 오늘 Unreal로 C++프로젝트를 만드니 또..! 또..! 빌드 에러가 발생했다..
어제처럼 단순 툴체인 문제는 아니었고 다른 문제였는데, 오늘 반나절 이상을 이 오류를 해결하는데 집중한 것 같다.
이후에는 라이브 강의를 듣고, 팀 과제를 진행했다.
라이브 과제는 디자인 패턴을 직접 구현해 보여주시면서 옵저버 패턴을 어떻게 사용하면 좋을지를 감을 잡은 것 같아서 너무 도움이 되었던것 같다.
또, 디버깅 팁 강의를 들으면서 이전에는 잘 몰랐던 디버깅 단축키, 기능 등을 알 수 있어서 좋았다.
1. 언리얼 오류 해결....
어제 컴퓨터를 포맷을 하고 다시 설치를 다해뒀었다.
너무 늦어져서 확인을 오늘하게 되었는데.. 와우.. VisualStudio Installer를 이용해 .Net, C++를 사용한 데스크톱 개발, C++를 사용한 게임 개발 까지 설치했는데도 에러가 발생했었다.
에러 메세지를 해석해보니, SDK 버전이 맞지 않는다는 내용이 있었는데, 나는 최신 버전을 설치하면 다 된다 생각하고, 몇번이고 다시 지웠다까는 것을 반복했다.. ㅠ
VS 재설치.. Unreal 재설치.. 라이더 재설치…
그러다가 너무 막막해서 튜터님께 여쭤봤는데, .Net 같은 것들이 버전이 안맞아서 컴파일을 실패하는 것이었다.
VisualStudio로 프로젝트 솔루션을 열면, 우측 상단에 몇 가지 패키지가 버전이 안맞는다는 메세지와 설치 버튼이 있었다.
해당 메세지의 설치 버튼을 눌러 언리얼 버전에 맞는 라이브러리 번들(?)들을 설치할 수 있었다.
이 방법을 사용하지 않는다면 아래처럼 진행해야 한다.
언리얼 문서 등을 보고, 언리얼 해당 버전에서 설치해야하는 것들이 무엇인지 하나하나 확인해서 직접 수동으로 하나하나 설치를 해주어야 한다..
어제 새벽까지 자료 정리, 포맷을 했고, 오늘 반나절 동안 언리얼 빌드 오류만 잡고있었다.
결과적으로는 빌드 오류를 해결했고, 라이더도 사용해 보았다.
ㄴ> 라이더 좋당..ㅎㅎ
2. 디버깅
디버깅이란?
코드의 오류를 찾고 수정하며, 프로그램의 동작을 분석하기 위한 핵심 도구이다.
● 중단점 (Breakpoint)
○ 실행을 특정 지점에서 멈추고 상태를 확인
○ 설정 방법 : 코드 줄 번호 왼쪽 클릭 또는 F9
○ ctrl + F9 : 중단점의 활성/비활성
■ 설정을 해제 하지는 않으나, 사용되지는 않음.
○ ctrl + alt + B : 중단점 창 실행
■ 모든 중단점을 확인 및 제어 할 수 있는 창을 띄운다.
● 실행 제어
○ F5 : 디버깅 시작 / 계속
○ Shift + F5 / ctrl + break : 디버깅 중지
○ F10 : 한 단계씩 실행 (Step Over)
○ F11 : 함수 내부로 진입 (Step Into)
○ Shift + F11 : 함수 종료 후 반환 (Step Out)
● 빠른 보기 (Quick Watch)
○ 변수나 식의 값을 즉시 확인
○ 선택 후 Shift + F9 또는 오른쪽 클릭 후 Quick Watch 선택
● 호출 스택 (Call Stack)
○ 호출 스택(Call Stack)은 프로그램 실행 중 함수 호출과 관련된 정보를 관리하는 특수한 메모리 구조입니다.
○ 함수 호출과 반환의 순서를 관리하며, 특히 재귀 호출이나 중첩 함수 호출이 많은 경우 호출 스택이 중요하게 작동합니다.
● 조건부 중단점 설정
○ 조건에 따라 중단점을 활성화.
○ 설정 : 중단점 우클릭 > Conditions
○ 예 : 특정 변수 값이 10 이상일 때 멈추기.
● 데이터 기록 (Log Points)
○ 중단 없이 변수 상태를 기록.
○ 설정 : 중단점 우클릭 > Actions > Log a message to Output window
● 메모리 릭 검출
○ _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
3. 단축키
주요 단축키
● ctrl + k, ctrl + c : 주석 처리
● ctrl + k, ctrl + u : 주석 해제
● ctrl + k, d : 코드 정렬
● ctrl + m,m : 코드 접기 펼치기
● ctrl + Q / ctrl + T : 검색 기능 열기
● ctrl + k + o : 헤더/cpp 전환
탐색 및 작업
● Ctrl + ,: 전체 파일에서 검색
● Ctrl + Shift + B: 빌드
● Ctrl + Tab: 열린 파일 간 이동
● Ctrl + Alt + L: 솔루션 탐색기 열기
● Shift + F12 : 참조 호출된 모든 함수 찾기
● Ctrl + F12 / F12 : 함수 /변수 정의로 이동
● Ctrl + . + D : 헤더기반 CPP 함수 자동 작성
4. Unreal 디버깅 팁
1. 최적화 옵션 끄기
언리얼을 진행하다 보면 중단점이 적용되지 않는 현상이 발생한다.
이는 언리얼의 최적화 옵션 때문에 빠르게 지나가는 부분에 해당되기 때문이다.
(보통 Tick / NativePaint 등)
이럴 경우 디버깅 하고 싶은 함수의 시작 부분과 끝 부분을
#pragma optimize("", off) / #pragma optimize("", on) 으로 감싸준다.
2. Unreal CPP Message
if (GEngine) // GEngine이 유효한지 확인
{
GEngine->AddOnScreenDebugMessage(
-1, // Key 값 (-1은 메시지가 매번 새로운 ID로 출력됨)
DisplayTime, // 화면에 표시될 시간(초)
TextColor, // 메시지 색상
Message // 출력할 메시지
);
}
블루 프린트의 Print string과 동일하다.
3. 언리얼 CMD 창 활용
UFUNCTION(Exec)
void SpawnTestActor(int count);
언리얼 함수 내에서 Exec 키워드를 삽입시 언리얼 커맨드라인에서 원하는 타이밍에 실행 할 수 있다.
다만 네트워크 상 Authority를 가지고 있는 Character / Player Controller / GameMode에서만 호출이 가능하다.
` (1번 왼쪽에 물결 키로 에디터에서 커맨드라인을 부를 수 있다.)
Stat FPS : 현재 프레임 출력
Show Collision : 충돌체크 콜리전 디버깅
5. 마무리
'프로그래밍 > Unreal 부트캠프' 카테고리의 다른 글
TIL 2025.01.13 기록 (0) | 2025.01.13 |
---|---|
TIL 2025.01.10 기록 (0) | 2025.01.10 |
TIL 2025.01.08 기록 (2) | 2025.01.08 |
TIL 2025.01.07 기록 (0) | 2025.01.07 |
TIL 2025.01.06 기록 (0) | 2025.01.06 |