[BP & C++] 로그 출력하기

Woogle·2022년 9월 21일
0

언리얼 엔진 5

목록 보기
7/59

📄 블루프린트에서 로그 출력하기

  • Print String 함수를 사용한다.

✏️ 블루프린트

✏️ 출력 결과


📄 C++에서 로그 출력하기

  • UE_LOG 매크로 함수를 사용한다.

✏️ C++ 코드

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

	// 정수
	int32 myInt = 100;
	UE_LOG(LogTemp, Warning, TEXT("MyInt is : %d"), myInt);

	// 실수
	float myFloat = 3.14159f;
	UE_LOG(LogTemp, Warning, TEXT("myFloat is : %f"), myFloat);
	UE_LOG(LogTemp, Warning, TEXT("myFloat is : %.2f"), myFloat);	// 소수점 2자리까지만

	double myDouble = 0.000756;
	UE_LOG(LogTemp, Warning, TEXT("myDouble is : %lf"), myDouble);

	// 문자
	char myChar = 'C';
	UE_LOG(LogTemp, Warning, TEXT("myChar is : %c"), myChar);

	wchar_t wideChar = L'W';
	UE_LOG(LogTemp, Warning, TEXT("myChar is : %lc"), wideChar);

	// 논리
	bool myBool = true;
	UE_LOG(LogTemp, Warning, TEXT("myBool is : %d"), myBool);	// bool이 int로 형변환
    UE_LOG(LogTemp, Warning, TEXT("%s"), myBool ? TEXT("true") : TEXT("false"));	// 3항연산자

	// 문자열
	FString myString = TEXT("This is myString");
	UE_LOG(LogTemp, Warning, TEXT("%s"), *myString);	// 포인터로 문자열을 반환
	UE_LOG(LogTemp, Warning, TEXT("%s"), *GetName());	// 오브젝트의 이름을 반환

✏️ 출력 결과


📄 매크로 활용

  • Build.cs 파일에 매크로로 등록시켜놓고 사용하면 정말 편하다.
// Woogle's debug macro
PublicDefinitions.Add("WG_LOG(x)=UE_LOG(LogTemp, Warning, TEXT(x));");
PublicDefinitions.Add("WG_TEXT(x)=if(GEngine){GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Magenta, TEXT(x));}");
PublicDefinitions.Add("WG_STRING(x)=if(GEngine){GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Magenta, x);}");
PublicDefinitions.Add("WG_BOOL(x)=if(GEngine){GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, (x ? FString(\"true\") : FString(\"false\")));}");
PublicDefinitions.Add("WG_INT(x)=if(GEngine){GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Turquoise, FString::FromInt(x));}");
PublicDefinitions.Add("WG_FLOAT(x)=if(GEngine){GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Green, FString::SanitizeFloat(x));}");
PublicDefinitions.Add("WG_VECTOR(x)=if(GEngine){GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, x.ToString());}");
PublicDefinitions.Add("WG_ROTATOR(x)=if(GEngine){GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Purple, x.ToString());}");
PublicDefinitions.Add("WG_ENUM(x)=if(GEngine){GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Emerald, UEnum::GetDisplayValueAsText(x).ToString());}");
PublicDefinitions.Add("WG_FUNC()=if(GEngine){GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::White, (FString(__FUNCTION__) + TEXT(\"(\") + FString::FromInt(__LINE__) + TEXT(\")\")));}");
profile
노력하는 게임 개발자

0개의 댓글