언리얼 엔진에서 디버그 메시지를 출력(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));
//
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