728x90
반응형
- 정리
- 언리얼 컨테이너 라이브러리
- TArray, TSet 컨테이너 라이브러리 내부 구조와 활용 방법
- 디버그 빌드를 사용해 메모리 정보를 확인하는 방법
- 두 컨테이너 라이브러리가 가진 특징의 이해
- 언리얼 컨테이너 라이브러리
- 언리얼 컨테이너 라이브러리
- 언리얼 엔진이 자체 제작해 제공하는 자료구조 라이브러리
- 언리얼 C++은 다양한 자료구조 라이브러리를 직접 만들어 제공하고 있음
- 게임 제작에 유용하게 사용되는 대표적인 라이브러리들
- TArray
- 오브젝트를 순서대로 담아 효율적으로 관리하는 용도
- TMap
- 중복되지 않는 요소로 구성된 집합을 만드는 용도
- TSet
- 키, 밸류 조합의 레코드를 관리하는 용도
- TArray
- C++ STL과 언리얼 컨테이너 라이브러리의 차이점
- C++ STL은 범용적으로 설계되어 있음
- C++ STL은 표준이기 때문에 호환성이 높다.
- C++ STL에는 많은 기능이 엮여 있어 컴파일 시간이 오래 걸림
- 언리얼 컨테이너 라이브러리(UCL)는 언리얼 엔진에 특화
- 언리얼 컨테이너 라이브러리(UCL)는 언리얼 오브젝트 구조를 안정적으로 지원
- 언리얼 컨테이너 라이브러리(UCL)는 가볍고 게임 제작에 최적화되어 있음
- TArray 개요
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/array-containers-in-unreal-engine/?application_version=5.1
dev.epicgames.com
- 가변 배열(Dynamic Array) 자료구조
- STL의 vector와 동작 원리가 유사함
- 게임제작에서는 가변 배열 자료구조를 효과적으로 활용하는 것이 좋음
- 데이터가 순차적으로 모여있기 때문에 메모리를 효과적으로 사용할 수 있고 캐시 효율이 높다.
- 컴퓨터 사양이 좋아지면서, 캐시 지역성(Locality)으로 인한 성능 향상은 굉장히 중요
- 임의 데이터의 접근이 빠르고, 고속으로 요소를 순회하는 것이 가능
- 가변 배열의 단점
- 맨 끝 데이터를 추가하는 것은 가볍지만, 중간에 요소를 추가하거나 삭제하는 작업의 비용이 큼
- 데이터가 많아질 수록 검색, 삭제, 수정 작업이 느려지기 때문에, 많은 수의 데이터에서 검색 작업이 빈번하게 일어난다면 TArray 대신 TSet을 사용하는 것이 좋음
- 주로 쓰이는 함수
- Add
- Emplace
- Append
- Insert
- …
- TSet 개요
언리얼 엔진의 세트 컨테이너 | 언리얼 엔진 5.4 문서 | Epic Developer Community
TSet, 세트는 보통 순서가 중요치 않은 상황에서 고유 엘리먼트를 저장하는 데 사용되는 고속 컨테이너 클래스입니다.
dev.epicgames.com
- STL의 set과 언리얼 TSet의 비교
- STL set의 특징
- 이진 트리로 구성되어 있어 정렬을 지원함
- 메모리 구성이 효율적이지 않음
- 요소가 삭제될 때 균형을 위한 재구축이 일어날 수 있음
- 모든 자료를 순회하는데 적합하지 않음
- 언리얼 TSet 특징
- 해시테이블 형태로 키 데이터가 구축되어 있어 빠른 검색이 가능
- 동적 배열의 형태로 데이터가 모여있음
- 데이터는 빠르게 순회할 수 있음
- 데이터는 삭제해도 재구축이 일어나지 않음
- 자료에는 비어있는 데이터가 있을 수 있음
- STL set과 언리얼 TSet의 활용 방법은 서로 다르기 때문에 주의할 것
- STL의 unordered_set과 유사하게 동작하지만 동일하진 않음
- TSet은 중복 없는 데이터 집합을 구축하는데 유용하게 사용할 수 있음
- STL set의 특징
- TArray와 TSet 비교
- TArray
- 빈틈없는 메모리
- 가장 높은 접근성능
- 가장 높은 순회성능
- TSet
- 빠른 중복 감지
해당 포스트는 인프런의 <이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해>
강의를 수강하고 정리한 내용입니다.
이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해 | 이득우 - 인프런
이득우 | 대기업 현업자들이 수강하는 언리얼 C++ 프로그래밍 전문 과정입니다. 언리얼 엔진 프로그래머라면 게임 개발전에 반드시 알아야 하는 언리얼 C++ 기초에 대해 알려드립니다., [사진] 언........................
www.inflearn.com
728x90
'공부 > 이득우의 언리얼 프로그래밍' 카테고리의 다른 글
[Study] Part1 - 언리얼 엔진의 메모리 관리 (12/15) (0) | 2024.05.07 |
---|---|
[Study] Part 1 - 언리얼 컨테이너 라이브러리 II - 구조체와 Map (11/15) (0) | 2024.05.03 |
[Study] Part 1 - 언리얼 C++ 설계 Ⅲ - 델리게이트 (9/15) (0) | 2024.04.30 |
[Study] Part 1 - 언리얼 C++ 설계Ⅱ - 컴포지션 (8/15) (0) | 2024.04.29 |
[Study] Part 1 - 언리얼 C++ 설계 Ⅰ - 인터페이스 (7/15) (0) | 2024.04.28 |