C++ 프로그래머의 경우
블루프린트 스크립팅을 사용하려면 언리얼 엔진만 있으면 됩니다. 모든 필요한 기능은 언리얼 엔진에 내장되어 있습니다.
C++로 코드를 작성하려면 Windows에서 Visual Studio를 다운로드하거나 macOS에서 Xcode를 설치합니다. 언리얼 엔진에서 새 C++ 프로젝트를 처음 생성하거나 기존 프로젝트에 C++ 코드를 추가하면 언리얼 엔진은 Visual Studio 프로젝트 파일을 자동으로 생성합니다.
언리얼 엔진 프로젝트에서 Visual Studio에 액세스하는 방법은 두 가지가 있습니다.
-
콘텐츠 브라우저 에서 C++ 클래스를 더블클릭 하여 Visual Studio에서 엽니다.
-
메인 메뉴에서 툴(Tools) > Visual Studio 열기(Open Visual Studio) 로 이동합니다. 이 옵션은 프로젝트에 C++ 클래스가 하나 이상 있는 경우에만 표시됩니다.
언리얼 엔진에서의 중요한 차이점: 언리얼 엔진의 새 버전을 다운로드한 후 또는 디스크의 소스 파일 위치를 수동으로 변경하는 경우와 같이 Visual Studio 프로젝트 파일을 수동으로 새로 고쳐야 하는 경우가 있습니다. 이렇게 하려면 두 가지 방법을 사용할 수 있습니다.
-
언리얼 엔진의 메인 메뉴에서 툴(Tools) > Visual Studio 프로젝트 새로고침(Refresh Visual Studio Project) 을 선택합니다.
-
프로젝트 디렉터리에서 .uproject 파일을 우클릭 하고 Visual Studio 프로젝트 파일 생성(Generate Visual Studio project files) 을 선택합니다.
Start, Update 등 이벤트 함수 작성하기
이전에 MonoBehavior를 사용하여 작업해 본 경우에는 Start
, Update
, OnDestroy
같은 메서드에 익숙할 것입니다. 아래는 언리얼 엔진의 액터 및 컴포넌트와 Unity의 해당하는 행동을 서로 비교한 것입니다.
Unity에는 다음과 같은 단순 컴포넌트가 제공될 수 있습니다.
public class MyComponent : MonoBehaviour
{
void Start() {}
void OnDestroy() {}
void Update() {}
}
언리얼 엔진에서는 새 컴포넌트 타입만 코딩하는 것이 아니라 액터 자체에서 코드를 작성할 수 있습니다. 이는 실제로 매우 일반적이며 유용한 방식입니다.
언리얼 엔진 액터는 Unity의 Start
, OnDestroy
및 Update
함수와 유사한 메서드 세트를 갖추고 있습니다. 다음과 같은 예시를 들 수 있습니다.
C++
UCLASS()
class AMyActor : public AActor
{
GENERATED_BODY()
// 게임 시작 시 호출됩니다.
void BeginPlay();
// 소멸 시 호출됩니다.
void EndPlay(const EEndPlayReason::Type EndPlayReason);
// 모든 프레임을 호출하여 이 액터를 업데이트합니다.
void Tick(float DeltaSeconds);
};
블루프린트

언리얼 엔진의 컴포넌트에는 다양한 함수가 포함되어 있습니다. 기본적인 예시는 다음과 같습니다.
C++
UCLASS()
class UMyComponent : public UActorComponent
{
GENERATED_BODY()
// 소유 액터가 생성된 후 호출됩니다.
void InitializeComponent();
// 컴포넌트 또는 소유 액터가 소멸 중인 경우 호출됩니다.
void UninitializeComponent();
// 틱의 컴포넌트 버전입니다.
void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction);
};
블루프린트

기억해 둘 점은, 언리얼 엔진에서는 반드시 해당 메서드의 부모 클래스 버전을 호출해야 한다는 것입니다.
예를 들어 Unity C#에서는 base.Update()
를 호출하겠지만, 언리얼 엔진 C++에서는 Super::TickComponent()
를 사용하게 됩니다.
void UMyComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
// 커스텀 틱
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
}
C++에서는 접두사 A
를 사용하는 클래스도 있고, 접두사 U
를 사용하는 클래스도 있습니다. A
는 액터 서브클래스를 나타내고, U
는 오브젝트 서브클래스를 나타냅니다. 가장 일반적인 접두사는 F
이며, 대부분의 일반 데이터 구조와 UObject 이외의 클래스에 사용됩니다.