Unreal C++/Log2017. 11. 25. 11:46

언리얼 엔진에서 디버그 메시지를 출력(Log)하는 다양한 방법


https://wiki.unrealengine.com/Logs,_Printing_Messages_To_Yourself_During_Runtime


로그 출력창 열기

창 > 개발자 툴 > 출력로그


UE_LOG(LogTemp, Warning, TEXT("Your message"));


로그레벨 지정자

- Fatal : 로그파일과 콘솔에 항상 출력되며 프로그램이 종료한다

- Error : 적색으로 콘솔과 파일에 출력된다

 - Warning : 황색으로 콘솔과 파일에 출력된다

- Display : 콘솔과 파일에 출력된다

 - Log : 파일에 출력된다. 에디터에서 실행할 때는 콘솔에도 출력된다

- Verbose : 로그파일에만 출력된다

- VeryVerbose : 로그파일에만 출력되며 매우 상세한 메시지가 출력된다




사용예 (한글이 깨지는 경우에는 이 페이지 하단 내용 참조)

UE_LOG(LogTemp, Warning, TEXT("Hello %s"), TEXT("World"));

UE_LOG(LogTemp, Warning, TEXT("Hello %s, %d, %f"),TEXT("World"), 100, 3.14);

UE_LOG(LogTemp, Warning, TEXT("플레이어 이름: %s"), TEXT("홍길동"));


FString fs(TEXT("홍길동"));

UE_LOG(LogTemp, Warning, TEXT("플레이어:%s, 점수:%d"), *fs, 89);



콘솔이 아닌 스크린에 로그 출력하기

#include <EngineGlobals.h>

 #include <Runtime/Engine/Classes/Engine/Engine.h>

 // ...

 GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("This is an on screen message!"));

 GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("Some variable values: x: %f, y: %f"), x, y));



첫번째 아규먼트: 키, -1을 키로 가진 메시지는 서로 덮어쓰지 않고 다른 행에 출력된다. 양수를 키로 사용하면 뒤에 오는 로그가 앞의 로그를 덮어쓰게 된다
두번째 아규먼트는 출력할 기간(초)이다

위의 방법을 조금 더 편리하게 사용하려면 다음과 같이 매크로를 선언하여 사용하면 된다

#include <EngineGlobals.h>
#include <Runtime/Engine/Classes/Engine/Engine.h>

#define print(text) if (GEngine) GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::White,text)

//

print(FString::Printf(TEXT("변수의 값 확인: x: %f, y: %f"), 2.71818, 3.14));



스크린에 한글을 출력하는 예

#include <EngineGlobals.h>

#include <Runtime/Engine/Classes/Engine/Engine.h>

............

GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("한글: x: %f, y: %f"), 100, 100));


출력로그에 한글 출력하기

UE_LOG(LogTemp, Warning, TEXT("플레이어 이름: %s"), TEXT("홍길동"));


C++에서 블루프린트로 한글을 리턴하여 스크린에 출력하려는 경우

FText t = FText::FromString(TEXT("Hello 한글"));

return t; // 리턴된 한글 텍스트는 블루프린트를 사용하여 스크린에 출력했을 때 깨지지 않았다



스크린이나 출력로그에서 한글이 깨지는 경우

만약 Visual Studio 2017 을 이용하여 C++ 코드를 작성하고 언리얼 엔진에서 컴파일한 후에 위의 코드를 실행했을 때 화면이나 출력로그에 표시된 한글이 깨져 있다면 Visual Studio에서 파일을 [다른이름으로저장]할 때 저장버튼 우측에 있는 작은 삼각형을 누르고 [인코딩하여 저장]을 선택하면 다양한 인코딩을 선택할 수 있다.

Visual Studio2017에서는 디폴트로 [한국어-코드페이지 949]로 설정되어 있는데 [유니코드(서명이 있는 UTF-8) - 코드페이지 65001] 으로 변경한 결과 한글이 깨지는 문제가 해결되었다

https://msdn.microsoft.com/ko-kr/library/dxfdkfke.aspx




Posted by cwisky