KoreanFoodie's Study
[언리얼] Helper Function - 로그 (Log) 2 : 화면에 출력하기 본문
Game Dev/Unreal C++ : Dev Log
[언리얼] Helper Function - 로그 (Log) 2 : 화면에 출력하기
GoldGiver 2022. 4. 19. 14:24
화면에 출력하는 로깅시스템
콘솔에 출력했던 것과 비슷하게, 이번에는 UE_LOG 가 아닌 AddOnScreenDebugMessage 함수를 활용해 화면에 값을 출력해보자. 출처는 여기!
CLog.h
class UE_PROJECT_NAME_API CLog
{
public:
static void Print(int32 InValue, int32 InKey = -1, float InDuration = 10, FColor InColor = FColor::Blue);
static void Print(float InValue, int32 InKey = -1, float InDuration = 10, FColor InColor = FColor::Blue);
static void Print(const FString& InValue, int32 InKey = -1, float InDuration = 10, FColor InColor = FColor::Blue);
static void Print(const FVector& InValue, int32 InKey = -1, float InDuration = 10, FColor InColor = FColor::Blue);
static void Print(const FRotator& InValue, int32 InKey = -1, float InDuration = 10, FColor InColor = FColor::Blue);
static void Print(const UObject* InValue, int32 InKey = -1, float InDuration = 10, FColor InColor = FColor::Blue);
static void Print(const FString& InFileName, const FString& InFuncName, int32 InLineNumber);
}
CLog.cpp
DEFINE_LOG_CATEGORY_STATIC(PrintToScreen, Display, All)
void CLog::Print(int32 InValue, int32 InKey, float InDuration, FColor InColor)
{
GEngine->AddOnScreenDebugMessage(InKey, InDuration, InColor, FString::FromInt(InValue));
}
void CLog::Print(float InValue, int32 InKey, float InDuration, FColor InColor)
{
GEngine->AddOnScreenDebugMessage(InKey, InDuration, InColor, FString::SanitizeFloat(InValue));
}
void CLog::Print(const FString& InValue, int32 InKey, float InDuration, FColor InColor)
{
GEngine->AddOnScreenDebugMessage(InKey, InDuration, InColor, InValue);
}
void CLog::Print(const FVector& InValue, int32 InKey, float InDuration, FColor InColor)
{
GEngine->AddOnScreenDebugMessage(InKey, InDuration, InColor, InValue.ToString());
}
void CLog::Print(const FRotator& InValue, int32 InKey, float InDuration, FColor InColor)
{
GEngine->AddOnScreenDebugMessage(InKey, InDuration, InColor, InValue.ToString());
}
void CLog::Print(const UObject* InValue, int32 InKey, float InDuration, FColor InColor)
{
FString str;
if (!InValue) return;
if (!!InValue)
str.Append(InValue->GetName());
str.Append(!!InValue ? " Not Null" : "Null");
GEngine->AddOnScreenDebugMessage(InKey, InDuration, InColor, str);
}
void CLog::Print(const FString& InFileName, const FString& InFuncName, int32 InLineNumber)
{
int32 index = 0, length = 0;
InFileName.FindLastChar(L'\\', index);
length = InFileName.Len() - 1;
FString fileName = InFileName.Right(length - index);
FString str;
str.Append(fileName);
str.Append(", ");
str.Append(InFuncName);
str.Append(", ");
str.Append(FString::FromInt(InLineNumber));
GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Red, str);
}
int, float, Fvector 부터 Fstring, UObject, 파일 이름까지 원하는 결과를 화면에 출력해줄 수 있다.
위에서 !!InValue 를 쓰는 이유는, 변수를 0 또는 1로 변환해주기 위해서 사용한다. 일반적으로 0 이 아닌 어떤 변수를 1로 만들어 주기 위해 사용한다. 자세한 설명은 여기로.
'Game Dev > Unreal C++ : Dev Log' 카테고리의 다른 글
[언리얼] 특정 액터에 Attached 된 액터 삭제하기 (0) | 2022.04.19 |
---|---|
[언리얼] Helper Function : 오브젝트 생성 및 애셋 불러오기 (0) | 2022.04.19 |
[언리얼] Helper Function - 로그 (Log) 1 : 콘솔에 출력하기 (0) | 2022.04.19 |
언리얼 실습용 게임 WithTheLight 기획 (0) | 2022.03.28 |
언리얼 UPROPERTY 자동 들여쓰기 조정 (0) | 2022.03.26 |
Comments