C++ 클래스는 언리얼 엔진 게임 로직을 구현하는 핵심 요소이다. 언리얼 엔진은 UObject 기반의 클래스 시스템을 사용하며, 게임의 액터, 컴포넌트, UI, 애니메이션 등 다양한 기능을 C++로 정의할 수 있다.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyActor.generated.h"
UCLASS()
class MYGAME_API AMyActor : public AActor
{
GENERATED_BODY()
public:
AMyActor();
protected:
UPROPERTY(EditAnywhere)
float Health;
UFUNCTION(BlueprintCallable)
void TakeDamage(float DamageAmount);
};
간단히 구조를 살펴보자면 먼저 헤더 파일 (.h) 이 있다. 이 파일에선 전처리기에 대한 구문과 클래스와 변수 그리고 함수를 선언/정의하는 역할을 한다.
#include "MyActor.h"
AMyActor::AMyActor()
{
Health = 100.0f;
}
void AMyActor::TakeDamage(float DamageAmount)
{
Health -= DamageAmount;
}
그리고 실제 코드를 구현하는 구현 파일(.cpp) 가 있다. 헤더 파일에서 선언되었던 함수를 정의하고 변수들을 실제로 다루는 파일이다. 또한, 생성자 함수를 만들어서 변수의 초기화 등 설정을 할 수 있으며, BeginPlay 혹은 Tick 같은 엔진 함수를 오버라이드하여 이벤트를 구성할 수도 있다.

먼저 언리얼 엔진5에서 사용할 IDE(Integrated Development Environment)를 지정해주어야한다. Visual Studio 2022, VS Code 등 각자에게 알맞은 IDE를 설정하고 변경 사항이 있다면 에디터를 재실행한다.
언리얼 에디터에서 상단 바에서 툴 - 새로운 C++ 클래스... 를 클릭한다.
사용 용도에 맞게 적절한 부모 클래스를 설정하고 이름과 경로를 입력하여 클래스 생성을 한다.

이 때, C++ 클래스를 처음 생성한다면 다음과 같은 안내문이 나온다. 확인과 예를 누르고 가급적이면 언리얼 엔진 에디터를 종료하고 지정한 IDE 에서 빌드를 해주어야한다.
이제 자신의 OS에 맞는 빌드를 실행하면 준비 끝
이제 헤더 파일(
.h)에서 간단한 int형 변수와 float형 변수 2개를 추가하고 에디터로 돌아간다.
언리얼 엔진 우측 하단 바를 보면 라이브 코딩 기능이 있는데 이를 활용해 빠르게 컴파일하고 수정된 내용을 적용할 수 있다.
이제 생성한 C++ 클래스를 레벨에 배치해보자
정상적으로 변수가 만들어진 것을 확인할 수 있다.
BeginPlay 함수는 게임이 실행되었을 때 단 한 번 호출되는 함수이다. 주로 액터나 컴포넌트를 초기화할 때 사용되는데 이를 활용해 선언한 2개의 변수에 대해 초기화를 해보자
#include "MovingPlatform.h"
AMovingPlatform::AMovingPlatform()
{
PrimaryActorTick.bCanEverTick = true;
}
void AMovingPlatform::BeginPlay()
{
Super::BeginPlay();
a = 1;
b = 5.5;
}
void AMovingPlatform::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
이제 .cpp 파일로 와서 AMovingPlatform::BeginPlay() 함수 안에 변수 초기화에 대한 내용을 작성해준다.
에디터에서 게임을 실행하고
아웃라이너 에서 레벨에 배치한 MovingPlatform 을 찾아서 확인해보면 위에서 입력한대로 1 과 5.5 의 값을 확인할 수 있다.