참고자료
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 |