Assertion
언리얼에서 정의한 Assertion 용 매크로는 크게 (1) check, (2) verify, (3) ensure 세 가지가 있다. 또 이것들이 활용하는 형태에 따라 조금 변형된 버전으로 존재한다.
check()
C++의 assert 매크로에 대응된다. 디버그 빌드에서 조건이 false면 에러를 던져 에디터를 꺼버린다. 릴리즈 빌드에선 컴파일러에 의해 제거된다. (보다 구체적으로는, 디버그 빌드에서만 켜지는 DO_CHECK 플래그가 있어야지만 동작한다.)
verify()
기본 동작은 check와 같으나, DO_CHECK 플래그가 꺼져있어도(즉, 릴리즈 빌드에서도) 제거되지 않고 검사는 한다. 다만 반환값을 무시하므로 오류를 뱉지는 않는다.
ensure()
치명적이지 않은 오류에 사용하여, 조건이 false면 언리얼 크래시 리포터에 그 사실을 알리고 경고 문구를 출력하지만 에러를 던지지는 않는다.
Logging
언리얼에선 로그 파일, 출력 로그 창에 로그를 기록하기 위한 UE_LOG
매크로를 제공한다.
가장 기본이 되는 형태는 다음과 같다.
UE_LOG(카테고리, 속성, TEXXT("log contents formatted"), ...);
매번 모든 인자를 직접 입력하기는 번거로우므로 다음과 같은 매크로를 정의하여 사용하자.
로그 매크로를 정의할 소스 파일의 헤더
// 유저 정의 로그 카테고리 추가
DECLARE_LOG_CATEGORY_EXTERN(MyProjectLog, Log, All);
// 함수명과 줄번호 기록하기
#define LOG_INFO (FString(__FUNCTION__) + TEXT("(") + FString::FromInt(__LINE__) + TEXT(")"))
#define PRINT_LOG_INFO() UE_LOG(MyProjectLog, Warning, TEXT("%s"), *LOG_INFO)
#define PRINT_LOG(str, ...) UE_LOG(MyProjectLog, Warning, TEXT("%s %s"), *LOG_INFO, *FString::Printf(str, ##__VA_ARGS__))
로그 매크로를 정의할 소스 파일
DEFINE_LOG_CATEGORY(MyProjectLog);
이제 다음과 같이 사용한다.
PRINT_LOG(TEXT("Hello, %s"), TEXT("World!"));
'🛠 언리얼 엔진 > 기초' 카테고리의 다른 글
언리얼 오브젝트(UObject)의 이해 (0) | 2025.03.24 |
---|---|
언리얼 타입 (0) | 2025.03.24 |