[Unreal Engine] 언리얼 백과사전 – 1탄

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.

Unreal Engine C++ Core 백과사전 Vol. 1

대상 버전: Unreal Engine 5.4 ~ 5.8
형식: Markdown 표 기반 학습 노트
목표: HTML/CSS 카드가 깨지는 문제를 피하고, 블로그와 개인 노트에서 안정적으로 읽히는 구조로 정리

버전 메모
이 글의 20개 항목은 Unreal Engine C++ 입문과 실무에서 반복적으로 쓰이는 Core 개념입니다. 5.4~5.8 사이에서 엔진 기능은 계속 확장되었지만, 아래 항목들은 기본 C++ 개발 흐름에서 계속 학습 가치가 있는 범위로 묶었습니다. 세부 API 시그니처는 프로젝트의 실제 엔진 버전 문서를 기준으로 다시 확인하는 습관이 좋습니다.


1. Core Object System

No.핵심 항목5.4~5.8 적용 메모반드시 기억할 C++ 포인트면접/복습 질문
1UObject5.x 전반의 최상위 객체 기반. GC, 리플렉션, 직렬화의 출발점.직접 new/delete로 관리하지 않는다. 보통 NewObject<T>(), 서브오브젝트, 에셋 로딩, 엔진 소유권 흐름을 따른다.UObject가 일반 C++ 클래스와 다른 점은?
2UClass와 리플렉션5.4~5.8 모두 언리얼 타입 시스템의 중심.StaticClass(), GetClass(), IsA()를 통해 런타임 타입 정보를 다룬다. C++ RTTI와 다르게 엔진 메타데이터와 연결된다.C++ 기본 리플렉션이 약한데 언리얼은 어떻게 타입 정보를 다룰까?
3USTRUCT데이터 구조를 에디터, 블루프린트, 직렬화 시스템에 노출할 때 사용.값 타입 데이터 묶음에 적합하다. 내부 멤버도 필요하면 UPROPERTY()로 표시해야 직렬화/에디터 노출 흐름이 자연스럽다.USTRUCTUCLASS는 언제 나눠 쓰나?
4UENUM블루프린트와 에디터에서 선택 가능한 enum을 만들 때 유용.UENUM(BlueprintType)UMETA(DisplayName="...") 조합을 자주 쓴다.일반 C++ enum과 UENUM의 실무 차이는?
5UINTERFACEC++/블루프린트 양쪽에서 계약형 기능을 만들 때 사용.UInterface 클래스와 실제 IInterface 구현부가 나뉜다. 호출 방식도 일반 C++ 인터페이스와 다를 수 있다.언리얼 인터페이스가 일반 C++ 인터페이스보다 복잡한 이유는?

2. Macro And Editor Exposure

No.핵심 항목5.4~5.8 적용 메모반드시 기억할 C++ 포인트면접/복습 질문
6UPROPERTY()5.x 전반에서 GC 추적, 에디터 노출, 직렬화, 복제의 핵심 표시자.UObject* 참조를 멤버로 들고 있으면 UPROPERTY() 여부가 생명주기 안정성에 큰 영향을 준다.UPROPERTY()를 빼먹으면 어떤 문제가 생길 수 있나?
7UFUNCTION()C++ 함수를 블루프린트, RPC, 콘솔, 이벤트 시스템에 연결할 때 사용.BlueprintCallable, BlueprintPure, Server, Client, NetMulticast 같은 지정자의 의미를 구분해야 한다.BlueprintCallableBlueprintPure는 어떻게 다를까?
8EditAnywhere / VisibleAnywhere5.4~5.8에서 에디터 노출 제어의 기본 패턴.Edit은 수정 가능, Visible은 표시 중심이다. DefaultsOnly, InstanceOnly까지 구분하면 디테일 패널 설계가 안정적이다.디자이너가 수정하면 안 되는 값은 어떤 지정자를 써야 할까?
9BlueprintReadOnly / BlueprintReadWrite블루프린트 접근 권한을 조절하는 기본 지정자.C++ 캡슐화를 유지하려면 무조건 ReadWrite로 열기보다 필요한 범위만 열어야 한다.모든 변수를 BlueprintReadWrite로 열면 왜 위험할까?
10meta = (...)UI 표시, Clamp, Tooltip, ExposeOnSpawn 등 에디터 경험을 조정.ClampMin, ClampMax, ToolTip, AllowPrivateAccess, ExposeOnSpawn 같은 메타를 실무에서 자주 본다.meta는 런타임 로직인가, 에디터/노출 보조 정보인가?

3. Actor And Component Basics

No.핵심 항목5.4~5.8 적용 메모반드시 기억할 C++ 포인트면접/복습 질문
11AActor월드에 배치되거나 스폰되는 기본 단위. 5.x 게임플레이 코드의 중심.위치, 회전, 스케일, 컴포넌트, 네트워크 복제 흐름을 가진다. 순수 데이터 객체라면 UObject가 더 적합할 수 있다.UObject 대신 AActor를 써야 하는 기준은?
12UActorComponent액터에 기능을 조립하는 컴포넌트 기반 설계의 핵심.재사용 가능한 기능은 액터 상속보다 컴포넌트로 분리하면 결합도가 낮아진다.상속보다 컴포넌트를 쓰는 편이 좋은 상황은?
13USceneComponentTransform 계층을 가지는 컴포넌트. 루트/자식 부착 구조에 중요.SetupAttachment()와 RootComponent 설정 순서를 생성자에서 안정적으로 잡는 것이 중요하다.UActorComponentUSceneComponent의 결정적 차이는?
14CreateDefaultSubobject<T>()생성자에서 기본 컴포넌트를 만들 때 쓰는 표준 패턴.액터 생성자에서 컴포넌트를 만들고, 런타임 동적 객체는 상황에 따라 NewObject<T>()를 쓴다.생성자에서 NewObject 대신 CreateDefaultSubobject를 쓰는 이유는?
15Actor LifecycleConstructor, OnConstruction, BeginPlay, Tick, EndPlay 흐름은 5.x 공통 기초.생성자에서는 월드 상태 의존 로직을 피하고, 실제 플레이 시작 로직은 보통 BeginPlay()에 둔다.생성자와 BeginPlay()에 넣어야 할 코드는 어떻게 다를까?

4. Memory, Type Safety, And Utility Core

No.핵심 항목5.4~5.8 적용 메모반드시 기억할 C++ 포인트면접/복습 질문
16Garbage Collection5.x UObject 생명주기의 기본. 참조 추적과 루트 세트 이해가 중요.UPROPERTY()로 추적되는 참조와 추적되지 않는 포인터를 구분한다. 임시 참조는 수명 관리에 주의한다.언리얼 GC는 C++ 스마트 포인터와 무엇이 다를까?
17TObjectPtr<T>UE5 계열에서 UObject 멤버 포인터 표현으로 자주 등장.원시 UObject*를 완전히 모르는 것은 위험하다. 다만 UE5 코드에서는 TObjectPtr 사용 패턴도 함께 읽어야 한다.TObjectPtr를 보면 어떤 의도로 이해해야 할까?
18TWeakObjectPtr<T>UObject를 소유하지 않고 안전하게 참조할 때 사용.대상이 파괴될 수 있으므로 IsValid() 확인 후 사용한다. UI, 비동기, 캐시성 참조에서 유용하다.약한 참조가 필요한 상황은 언제인가?
19TSubclassOf<T>특정 부모를 상속한 클래스만 받을 때 쓰는 타입 안전 장치.에디터에서 클래스 선택을 열어주되, 잘못된 타입 선택을 줄인다. 스폰할 클래스 지정에 자주 쓰인다.UClass* 대신 TSubclassOf를 쓰면 무엇이 좋아지나?
20Cast<T>() / IsA()언리얼 객체 타입 확인과 변환의 기본 도구.일반 C++ dynamic_cast보다 언리얼 리플렉션 시스템과 맞는 Cast<T>()를 주로 사용한다.Cast<T>() 실패 시 어떤 값을 반환하고 어떻게 처리해야 할까?

Vol. 1 학습 순서 제안

순서묶음공부 목표
1UObject, UClass, 리플렉션언리얼 C++이 일반 C++과 달라지는 지점 이해
2UPROPERTY, UFUNCTION, meta에디터/블루프린트/직렬화 노출 방식 이해
3AActor, Component, Lifecycle월드에 존재하는 게임플레이 객체의 생명주기 이해
4GC, 포인터, 캐스팅안전한 참조와 타입 변환 습관 만들기

다음 탄 후보

예정 Vol.주제 후보포함할 항목 예시
Vol. 2Gameplay Utility CoreTArray, TMap, TSet, FString, FName, FText, UE_LOG, check, ensure, Timer
Vol. 3Delegate And EventSingle Delegate, Multicast Delegate, Dynamic Delegate, Event Dispatcher, Lambda Binding
Vol. 4Networking CoreReplication, RPC, GetLifetimeReplicatedProps, RepNotify, Authority, Ownership
Vol. 5Asset And Module CoreModule, Plugin, Asset Reference, Soft Object Path, Data Asset, Primary Asset

참고한 공식 자료

  • Unreal Engine C++ API Reference: https://dev.epicgames.com/documentation/unreal-engine/API
  • Reflection System in Unreal Engine: https://dev.epicgames.com/documentation/en-us/unreal-engine/reflection-system-in-unreal-engine
  • Unreal Object Handling: https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-object-handling-in-unreal-engine
  • Unreal Engine UProperties: https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-uproperties
  • Unreal Engine 5.4 Release Notes: https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-5.4-release-notes
  • Unreal Engine 5.5 Release Notes: https://dev.epicgames.com/documentation/unreal-engine/unreal-engine-5-5-release-notes
  • Unreal Engine 5.8 Release Notes: https://dev.epicgames.com/documentation/unreal-engine/unreal-engine-5-8-release-notes
  • Unreal Engine 5.8 overview article: https://www.unrealengine.com/news/unreal-engine-5-8-is-now-available