Unreal Engine 간단한 로그 찍기

2025. 1. 6. 21:24·Unreal Engine

참고자료

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/logging-in-unreal-engine

 

1. UE 로그 시스템

  • 아래의 코드와 같은 format 을 가지고 있으며, 각 파라메터는 다음과 같다.
    • 첫번째 파라메터는 카테고리
    • 두번째 파라메터는 로그 상세 레벨
    • 세번째 파라메터는 형식 문자열
    • 네번째 파라메터는 문자열에 들어갈 인자
UE_LOG(LogTemp, Warning, TEXT("Hello World! x %d"), num);

2. 코드 예제 실습

  • 3, 6, 9 게임 출력 예제
    • 이 코드에서 중요한 점은 int 타입을 String 타입으로 변경 한 후, TCHAR 타입을 통해 문자열에 3, 6, 9의 문자가 있는지 체크하는 부분이다.
    • FString::FromInt(): int32 타입을 String으로 바꿔주는 함수
void AMyActor::BeginPlay()
{
	Super::BeginPlay();
	
	int32_t Start = 1;
	int32_t End = 30;

	for (int32_t i = Start; i <= End; ++i)
	{
		FString Number = FString::FromInt(i); //숫자를 문자열로
		bool bIsClap = false;

		for (TCHAR Char : Number)
		{
			if (Char == '3' || Char == '6' || Char == '9')
			{
				bIsClap = true;
				break;
			}
		}

		if (bIsClap)
		{
			UE_LOG(LogTemp, Warning, TEXT("Clap"));
		}
		else
		{
			UE_LOG(LogTemp, Warning, TEXT("%d"), i);
		}
	}

}

  • 랜덤으로 숫자 생성 후 합 구하는 예제
void AMyActor::RandomSum()
{
	int MinValue = 1;
	int MaxValue = 100;

	int RandNum1 = FMath::RandRange(MinValue, MaxValue);
	int RandNum2 = FMath::RandRange(MinValue, MaxValue);
	int RandNum3 = FMath::RandRange(MinValue, MaxValue);

	int Sum = RandNum1 + RandNum2 + RandNum3;

	UE_LOG(LogTemp, Warning, TEXT("Random Numbers %d %d %d"), RandNum1, RandNum2, RandNum3);
	UE_LOG(LogTemp, Warning, TEXT("Sum %d"), Sum);
}

  • 다양한 로깅 연습
    • 두번째 파라메터인 로그 상세에 대한 다양한 내용

3. 숙제

  • UE_LOG를 활용한 로또 번호 생성기 구현 (내가 구현한 코드)
void AMyActor::RandomNumberGenerator()
{
    int32 MinValue = 1;
    int32 MaxValue = 45;

    TArray<int32> Array;

    while (Array.Num() < 6)
    {
        int RandomNumber = FMath::RandRange(MinValue, MaxValue);

        if (!Array.Contains(RandomNumber))
        {
            Array.Push(RandomNumber);
        }
    }
    Array.Sort();

    UE_LOG(LogTemp, Warning, TEXT("Lotto Numbers: %d %d %d %d %d %d"),
        Array[0], Array[1], Array[2], Array[3], Array[4], Array[5]);
}

4. 추가적인 내용

  • int 타입 배열의 숫자들을 string으로 바꿔서 출력하는 버전
    • 주의 - 이때 string을 %s타입에 맞게 만들기 위해 *연산을 통해 TEXT형식에 맞게 변환시켜주어야 한다.
FString LottoNumberStr;
for (int32 num : Array)
{
    LottoNumberStr += FString::FromInt(num) + TEXT(", ");
}
LottoNumberStr.RemoveFromEnd(TEXT(", "));

UE_LOG(LogTemp, Warning, TEXT("%s"), *LottoNumberStr);
  • 화면 디버그 메세지 출력하기
    • 첫번째 파라메터는 key이며, 고유한 정수 key를 통해 동일한 메시지가 여러번 추가되지 않도록 방지
    • 두번째 파라메터는 지연시간
    • 세번째 파라메터는 텍스트의 컬러
    • 네번째 파라메터는 FString 메세지 (주의 - TEXT 아님)
    if (GEngine)
    {
        GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, FString::Printf(TEXT("%s"), *LottoNumberStr));
    }

화면과 출력 로그에 출력되는 모습

 

'Unreal Engine' 카테고리의 다른 글

Unreal Engine Pointer Types  (1) 2025.01.09
UE_LOG 보충 (+ 과제)  (1) 2025.01.07
Unreal Engine 5 TIL day 5  (3) 2024.12.20
Unreal Engine 5 TIL day 4  (1) 2024.12.19
Unreal Engine 5 TIL day 3  (1) 2024.12.19
'Unreal Engine' 카테고리의 다른 글
  • Unreal Engine Pointer Types
  • UE_LOG 보충 (+ 과제)
  • Unreal Engine 5 TIL day 5
  • Unreal Engine 5 TIL day 4
gbleem
gbleem
gbleem 님의 블로그 입니다.
  • gbleem
    gbleem 님의 블로그
    gbleem
  • 전체
    오늘
    어제
    • 분류 전체보기 (184)
      • Unreal Engine (73)
      • C++ (19)
      • 알고리즘(코딩테스트) (27)
      • TIL (60)
      • CS (4)
      • 툴 (1)
  • 블로그 메뉴

    • 홈
    • 카테고리
  • 링크

    • 과제용 깃허브
    • 깃허브
    • velog
  • 공지사항

  • 인기 글

  • 태그

    addonscreendebugmessage
    gamestate
    applydamage
    매크로 지정자
    BFS
    blend pose
    map을 vector로 복사
    const
    cin함수
    enhanced input system
    Vector
    상속
    motion matching
    싱글턴
    C++
    actor 클래스
    템플릿
    DP
    character animation
    additive animation
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gbleem
Unreal Engine 간단한 로그 찍기
상단으로

티스토리툴바