언리얼 엔진은 기존에 설치해두었으므로, C++을 언리얼에 적용하는 부분을 중점적으로 필기한다.
Visual Studio도 2022 버전이 이미 설치되어 있으므로 C++을 사용한 게임 개발 도구만 추가되어있는지 체크한다.


Blank(기본)으로 C++ 프로젝트를 생성한다.

언리얼과 비주얼 스튜디오 컴파일러의 충돌 방지를 위해 라이브 코딩 기능은 꺼주는 것이 좋다고 한다.

상단 메뉴의 Tools에서 New C++ Class를 클릭해 생성한다.

액터를 선택하고 Next

이름을 설정하고 Create Class를 진행하면 비주얼 스튜디오가 열린다. 소스 파일은 언리얼을 통해서 만들어야한다.

UE_LOG를 추가하고 저장한다.

생성한 코드는 프로젝트 폴더의 C++클래스 폴더 하위에 들어있다.
Actor를 레벨에 배치하고 실행하면 로그를 확인할 수 있다.


UE_LOG 사용예시
void TestUELogExamples()
{
// 1. 일반 로그(Log) - 개발자가 디버깅을 위해 사용하는 기본 메시지
UE_LOG(LogTemp, Log, TEXT("Game has started. Player has joined the game."));
// 2. 중요 정보(Display) - 항상 표시되는 정보 메시지
FString PlayerName = TEXT("Player1");
UE_LOG(LogTemp, Display, TEXT("Welcome, %s! Enjoy the game."), *PlayerName);
// 3. 경고(Warning) - 잠재적 문제가 있을 때 경고를 출력
int PlayerHealth = 50;
if (PlayerHealth < 100)
{
UE_LOG(LogTemp, Warning, TEXT("Player health is below maximum: %d"), PlayerHealth);
}
// 4. 오류(Error) - 실행에 영향을 줄 수 있는 문제
int AmmoCount = 0;
if (AmmoCount == 0)
{
UE_LOG(LogTemp, Error, TEXT("No ammo left! Player cannot shoot."));
}
// 5. 문자열 결합 - 다양한 데이터를 한 메시지로 출력
int Score = 150;
int TimeLeft = 120;
UE_LOG(LogTemp, Log, TEXT("Score: %d, Time Left: %d seconds."), Score, TimeLeft);
// 6. 부동소수점(Floating Point) 값 출력
float PlayerSpeed = 325.5f;
UE_LOG(LogTemp, Display, TEXT("Player speed: %.2f units/sec"), PlayerSpeed);
// 7. 여러 심각도 사용 - 게임 상태에 따라 로그를 구분
bool bIsPaused = true;
if (bIsPaused)
{
UE_LOG(LogTemp, Warning, TEXT("Game is currently paused."));
}
else
{
UE_LOG(LogTemp, Log, TEXT("Game is running normally."));
}
// 8. 디버깅용 메시지 (Developer Note)
UE_LOG(LogTemp, Display, TEXT("This message is for developers to debug the game state."));
}
Fatal 심각도를 쓰면 게임이 꺼진다.
// 5. 치명적 오류(Fatal) - 프로그램이 더 이상 실행될 수 없는 경우 (종료됨)
bool bCriticalFailure = true;
if (bCriticalFailure)
{
UE_LOG(LogTemp, Fatal, TEXT("A critical failure occurred. Shutting down..."));
}
TArray::Contains 사용 예시
// 함수: ExampleContainsUsage
// 목적: 이 함수는 TArray의 Contains 메서드를 사용하여 배열에 특정 값이 포함되어 있는지 확인하는 방법을 보여줍니다.
// Contains 메서드는 배열 내에서 주어진 값이 존재하면 true, 존재하지 않으면 false를 반환합니다.
//
// 실행 결과:
// - 배열에 10이 포함되어 있기 때문에 "The array contains the value: 10" 로그가 출력됩니다.
// - 배열에 20은 포함되어 있지 않기 때문에 "The array does not contain the value: 20" 로그가 출력됩니다.
void ExampleContainsUsage()
{
// 1. 정수형 배열(TArray<int32>) 생성
TArray<int32> Numbers;
// 2. 배열에 값 추가
Numbers.Add(5); // 배열에 5 추가
Numbers.Add(10); // 배열에 10 추가
Numbers.Add(15); // 배열에 15 추가
// 3. 배열에 특정 값이 포함되어 있는지 확인
// 첫 번째 값 확인: 10
int32 SearchValue = 10;
if (Numbers.Contains(SearchValue))
{
UE_LOG(LogTemp, Warning, TEXT("The array contains the value: %d"), SearchValue);
}
else
{
UE_LOG(LogTemp, Warning, TEXT("The array does not contain the value: %d"), SearchValue);
}
// 두 번째 값 확인: 20
SearchValue = 20;
if (Numbers.Contains(SearchValue))
{
UE_LOG(LogTemp, Warning, TEXT("The array contains the value: %d"), SearchValue);
}
else
{
UE_LOG(LogTemp, Warning, TEXT("The array does not contain the value: %d"), SearchValue);
}
}
'코딩 학습 > C와 C++' 카테고리의 다른 글
| C++ 기초 - 포션 공방 만들기 과제 (0) | 2026.03.23 |
|---|---|
| C++ 기초 - Vector 템플릿 구현하기 (0) | 2026.03.20 |
| C++ 기초 - 스택, 큐 (0) | 2026.03.18 |
| C++ 메모 - 은/는, 이/가 자동 처리 (0) | 2026.03.17 |
| C++ 기초 - 디자인 패턴(싱글톤, 데코레이터, 옵저버) (0) | 2026.03.17 |