2026/01/02 4

Unreal Engine 에셋 매니저(Asset Manager)의 번들(Bundle) 기능

비동기 로딩이 진행되는 동안 사용자에게 진행 상황을 보여주는 로딩 화면(UI) 구현과 에셋을 그룹 단위로 관리하는 에셋 매니저(Asset Manager)의 번들(Bundle) 기능에 대해 설명해 드릴게요.비동기 로딩과 UI 연동 (진척도 표시)비동기 로딩을 요청하면 TSharedPtr이라는 핸들을 반환받습니다. 이 핸들을 통해 현재 로딩이 얼마나 진행되었는지 확인할 수 있습니다.[C++ 예시: 진척도 확인]// 1. 로드 요청 시 핸들을 보관합니다.TSharedPtr LoadHandle;void AMyGameMode::StartLoading(TArray AssetsToLoad){ FStreamableManager& Loader = UAssetManager::GetStreamableManager();..

Unreal Engine의 Data Table과 TSoftObjectPtr 활용한 응

데이터 테이블(Data Table)과 TSoftObjectPtr을 결합하는 방식은 대규모 RPG나 수집형 게임에서 메모리 효율을 극대화하는 핵심 설계 패턴입니다. 모든 아이템 정보를 담은 데이터 테이블이 메모리에 올라와 있어도, 실제 사용되는 리소스(메쉬, 텍스처)는 필요한 순간에만 로드하기 때문입니다.구조체(Struct) 정의먼저 데이터 테이블의 행(Row)이 될 구조체를 정의합니다. 이때 리소스는 반드시 TSoftObjectPtr로 선언합니다.C++ USTRUCT(BlueprintType)struct FItemData : public FTableRowBase{ GENERATED_BODY() UPROPERTY(EditAnywhere, BlueprintReadWrite) FString I..

Unreal Engine 비동기 로딩

비동기 로딩은 게임의 끊김(Stuttering)을 방지하는 핵심 기술입니다. TSoftObjectPtr을 실제 프로젝트에서 효과적으로 사용하는 두 가지 핵심 방법(C++와 블루프린트)을 정리해 드릴게요.1. C++: FStreamableManager를 이용한 비동기 로딩가장 권장되는 방식입니다. 엔진의 전역 매니저를 사용하여 백그라운드 스레드에서 에셋을 로드하고, 완료되면 콜백 함수를 실행합니다.[코드 예시]// Header (.h)UPROPERTY(EditAnywhere, Category = "Assets")TSoftObjectPtr SubMeshPtr;void OnMeshLoaded(); // 로드 완료 후 실행될 함수// Source (.cpp)void AMyActor::StartAsyncLoad(..

Unreal Engine의 TSoftObjectPtr 이란?

TObjectPtr이 "이미 로드된 객체를 어떻게 가리킬 것인가"에 집중한다면, TSoftObjectPtr은 "아직 로드되지 않은 객체를 어떻게 안전하게 가리키고, 원할 때 로드할 것인가"에 특화된 스마트 포인터입니다.1. Hard Reference vs Soft Reference가장 큰 차이는 메모리 로드 타이밍입니다.Hard Reference (TObjectPtr, UPROPERTY 포인터): A 클래스가 B 에셋을 하드 참조하면, A가 메모리에 로드될 때 B도 반드시 함께 로드됩니다. 이를 "줄줄이 비엔나"처럼 연쇄 로딩이 발생한다고 표현하며, 메모리 낭비의 주범이 됩니다.Soft Reference (TSoftObjectPtr): A가 B를 소프트 참조하면, A가 로드되어도 B는 로드되지 않습니다..

반응형