코딩 학습/C와 C++

C++ 기초 - 언리얼 엔진 기본 개념

이개 2026. 3. 19. 11:29

언리얼 엔진은 기존에 설치해두었으므로, C++을 언리얼에 적용하는 부분을 중점적으로 필기한다.

 

Visual Studio도 2022 버전이 이미 설치되어 있으므로 C++을 사용한 게임 개발 도구만 추가되어있는지 체크한다.

 

 

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

 

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

 

 

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

 

 

액터를 선택하고 Next

 

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

 

 

UE_LOG를 추가하고 저장한다.

 

 

생성한 코드는 프로젝트 폴더의 C++클래스 폴더 하위에 들어있다.

 

 

Actor를 레벨에 배치하고 실행하면 로그를 확인할 수 있다.

로그는 OutputLog 탭을 활성화하면 확인 가능하다.

 

 

 

 

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);
    }
}