이전 시간에,
C++ 프로젝트 생성과
새로운 C++ 클래스 작성,
작성한 액터의 빌드 과정에서 발생한 수많은 오류를 딛고
visual studio installer 에서 14.38... 플러그인?들을 무수히 다운받고
window sdk 와 .net framework 도 다운받고
프로젝트 경로에서 한글을 빼고 띄어쓰기를 없애고
build.cs 파일도 확인하고

액터를 프라이빗으로도 해보고 아예 지정 안하고 만들도록도 해보고
appdata/roaming/unreal engine/unrealbuildtool 에 있는
buildconfiguration.xml 도 수정해주면서
컴파일러 버전 지정도 중요 이슈
어떻게든 해결을 한 상태.
다시 한번 C++ 액터를 만들어보자
라이브코딩 설정이 켜져있길래 꺼둔 상태,
어차피 컴파일하고 하려면 언리얼을 껐다 켰다 할 필요가 있는 것 같기도
일단 생성단계까지 문제 없는 상황

똑같이 UE_LOG 코딩 추가
라이브코딩을 껐음에도 켜져있다는 경고가 뜨는 상황이지만
일단 언리얼 에디터에서 '짤각' 효과음과 함께 컴파일 자체는 문제없이 된 상황

BeginPlay 부분에 달려있는 로그이기 때문에
에디터에서 시작을 눌러줘야 로그화면에서 확인할수가 있다

문제없이 로그 나오는 거 까지 확인.
이전에 오류가 났던 "퍼블릭" 으로 지정한 상황에서도
오류가 나지 않는지 한번 확인할 필요가 있어 보인다
빌드까지는 문제없이 된 상황

에디터 컴파일 성공 사운드도 나왔고 로그도 정상 출력

int Start = 1; // 출력할 숫자의 시작 값
int End = 30; // 출력할 숫자의 끝 값
// 1부터 30까지 반복
for (int i = Start; i <= End; ++i)
{
// 숫자를 문자열(FString)로 변환
FString Number = FString::FromInt(i);
bool bIsClap = false; // "짝"을 출력할지 여부를 나타내는 플래그
// 변환된 문자열을 한 글자씩 검사
for (TCHAR Char : Number) // TCHAR를 사용해 플랫폼 독립적 문자 처리
{
// 현재 글자가 '3', '6', '9' 중 하나인지 확인
if (Char == '3' || Char == '6' || Char == '9')
{
bIsClap = true; // "짝"을 출력해야 함
break; // 하나라도 '3', '6', '9'를 발견하면 검사 종료
}
}
if (bIsClap)
{
// "짝"을 출력 (숫자에 3, 6, 9 중 하나가 포함된 경우)
UE_LOG(LogTemp, Warning, TEXT("짝"));
}
else
{
// 숫자를 출력 (숫자에 3, 6, 9가 없는 경우)
UE_LOG(LogTemp, Warning, TEXT("%d"), i);
}
}
언리얼에서는 문자열을 FString 으로 사용하고 있는 걸 확인할 수 있고
TCHAR 라는 것도 확인할 수 있다
FString 을 돌면서 TCHAR, 단일 문자 하나씩 확인하는 구문
이 코드를 BeginPlay 함수에 넣고 실행


로그 화면 필터에서 LogTemp 만 볼 수 있도록 설정 가능
"짝" 이 저렇게 나오는 이유는..?
// 랜덤 숫자 범위 설정
int MinValue = 1;
int MaxValue = 100;
// 랜덤 숫자 3개 생성
int RandomNumber1 = FMath::RandRange(MinValue, MaxValue);
int RandomNumber2 = FMath::RandRange(MinValue, MaxValue);
int RandomNumber3 = FMath::RandRange(MinValue, MaxValue);
// 합계 계산
int Sum = RandomNumber1 + RandomNumber2 + RandomNumber3;
// 결과 출력
UE_LOG(LogTemp, Warning, TEXT("Generated Numbers: %d, %d, %d"), RandomNumber1, RandomNumber2, RandomNumber3);
UE_LOG(LogTemp, Warning, TEXT("Sum of Numbers: %d"), Sum);
FMath 에 포함된 RandRange 함수를 통해 난수 출력,
합 계산해서 출력
이 "%d" 부분은
다른 프로그래밍 언어에서도 보던 것인데,
"서식문자" 혹은 "서식 지정자" 등으로 부르며
다양한 종류가 있지만 이 "%d" 는 10진수 정수를 뜻한다 (decimal)
저렇게 %d 로 대체 지정을 해놓고 , 뒤에서 변수를 지정하는 느낌
cout << "숫자: " << num << endl;
이런 방식과
printf("%d", num)이런 방식이 있는 느낌


한국어를 인식하지 못하는 듯

프로그램 실행 도중 문제가 발생하거나
특정 정보를 확인하고 싶을 때
UE_LOG를 활용해 볼 수 있다.
이 UE_LOG는 3가지로 구성되어 있는데:
카테고리
= 태그를 붙인다고 생각하면 된다
특정 카테고리만 분류해서 볼 수 있도록
직접 카테고리를 만들수도 있으며 보통 "LogTemp" 를 많이 쓴다
심각성
= 중요도에 따라 심각성을 분류할 수 있고,
각 로그는 색상이 다르게 출력된다.

실제 출력할 내용
= TEXT 붙이고 뒤에 넣는 내용들
함수로 별도로 만들어서 구현을 했기 떄문에
BeginPlay 구간에TestUELogExamples();를 넣어서 실행

