[UE5] 템플릿클래스와 컨테이너 라이브러리

이진혁·2025년 3월 12일
0

언리얼 공부정리

목록 보기
6/6

🎮 언리얼 엔진의 템플릿 클래스와 컨테이너 라이브러리

언리얼 엔진에서는 다양한 템플릿 클래스컨테이너 라이브러리를 제공하여 성능 최적화와 안정성을 확보하면서도 유연한 데이터 관리를 가능하게 합니다.


📌 1. 언리얼 엔진의 템플릿 클래스

언리얼 엔진은 C++의 기본 템플릿 기능을 활용하면서도 안정성최적화를 고려한 자체적인 템플릿 클래스를 제공합니다.

🔹 대표적인 언리얼 템플릿 클래스

템플릿 클래스설명
TSubclassOf<T>특정 클래스 유형(T)의 서브클래스를 저장하는 안전한 방법 제공
TWeakObjectPtr<T>약한 참조(Weak Pointer)로 가비지 컬렉션(GC)과의 호환성 보장
TSharedPtr<T>std::shared_ptr와 유사한 스마트 포인터로, 참조 카운팅 기반 메모리 관리
TUniquePtr<T>std::unique_ptr와 유사하게, 단일 소유권을 갖는 스마트 포인터
TOptional<T>값이 있을 수도 있고 없을 수도 있는 옵션형 데이터
TFunction<T>람다 및 일반 함수 포인터를 저장하는 함수 래퍼
TArrayView<T>기존 배열 데이터를 복사 없이 참조할 수 있도록 하는 뷰(View)


📌 2. 언리얼 컨테이너 라이브러리

언리얼 엔진은 자체적으로 최적화된 컨테이너 클래스를 제공하여, 기본 C++ STL 컨테이너보다 엔진 환경에 더 적합한 데이터 구조를 사용할 수 있도록 합니다.

🔹 대표적인 언리얼 컨테이너

컨테이너 클래스설명
TArray<T>동적 배열 (Vector)
TSet<T>중복을 허용하지 않는 해시 기반 집합 (Set)
TMap<KeyType, ValueType>Key-Value 구조의 해시 맵 (Map)
TPair<T1, T2>두 개의 값을 한 쌍으로 저장하는 구조체
TQueue<T>FIFO(선입선출) 큐
TDeque<T>양방향 큐 (덱, Deque)
TCircularBuffer<T>고정 크기의 원형 버퍼

TArray<T> 예제

TArray<int32> Numbers;  
Numbers.Add(10);
Numbers.Add(20);
Numbers.Add(30);

// 배열의 모든 요소 출력
for (int32 Number : Numbers)
{
    UE_LOG(LogTemp, Warning, TEXT("Number: %d"), Number);
}


🛠️ 언리얼 컨테이너 vs C++ STL 컨테이너

비교 항목언리얼 컨테이너 (TArray, TMap, etc.)C++ STL 컨테이너 (std::vector, std::map, etc.)
가비지 컬렉션GC 친화적이며, UObject와 함께 사용 가능기본적으로 GC 미지원
성능 최적화게임 엔진 환경에 맞게 최적화됨범용적이지만, 게임 개발에 최적화되지는 않음
에디터 기능 지원UProperty 시스템과 호환 가능언리얼 에디터에서 직접 노출 불가능
사용 편의성BlueprintReflection 시스템과 연계 가능기본적인 C++ 템플릿 시스템만 지원

🔥 마무리

  • 템플릿 클래스를 활용하면 타입 안정성과 최적화된 데이터 처리가 가능
  • 언리얼 컨테이너는 STL보다 엔진 친화적인 성능과 기능을 제공
  • 메모리 관리가 중요한 언리얼 환경에서는 스마트 포인터(TSharedPtr, TWeakObjectPtr) 사용이 권장됨
  • 게임 개발 시 GC 시스템과의 호환성을 고려하여 적절한 컨테이너와 템플릿을 선택하는 것이 중요

💡 언리얼 엔진의 템플릿과 컨테이너를 잘 활용하면 더욱 안전하고 최적화된 게임 로직을 구성할 수 있습니다! 🚀

0개의 댓글

관련 채용 정보