Table of Contents
[!note]
실습은 지난번 프로젝트인UnrealContainer에 이어서 작성
언리얼 구조체
🔗공식 문서
→ 강의와 똑같은 문서는 사라진것 같음
구조체 사용시 알아둘 정보
- 구조체는 단순한 데이터 타입에 적합하므로
UObjects와는 다름- 프로젝트 내부에서 보다 복잡한 인터랙션을 하기 위해서는
UObject또는AActor서브클래스를 만드는것이 좋음
- 프로젝트 내부에서 보다 복잡한 인터랙션을 하기 위해서는
UStruct는 리플리케이션용으로 간주되지 않음UProperty변수는 리플리케이션응으로간주됨
언리얼 구조체 UStruct
- 데이터 저장/전송에 특화된 가벼운 객체
- 대부분
GENERATED_BODY매크로를 선언해준다.- 리플레션, 직렬화와 같은 유용한 기능을 지원함.
GENERATED_BODY를 선언한 구조체는UScriptStruct클래스로 구현됨.- 이 경우 제한적으로 리플렉션을 지원함
- 속성
UPROPERTY만 선언할 수 있고 함수UFUNCTION은 선언할 수 없음
- 속성
- 언리얼 엔진의 구조체 이름은 F로 시작함. (엔진이 메모리관리를 해주지 않음)
- 대부분 힘 메모리 할당(포인터 연산)없이 스택 내 데이터로 사용됨.
NewObjectAPI를 사용할 수 없음
언리얼 리플렉션 관련 계층 구조
- 리플렉션에 관련된 언링러 오브젝트의 계층 구조

객체의 동적 배열 관리를 위한 예제 다이어그램
- 언리얼 오브젝트 학생의 동적 배열 관리 방법
- 언리얼 구조체 학생 정보의 동적 배열 관리 방법

UObject를 상속받는UStudent를 컨테이너에 담으면UPROPERTY매크로를 필수로 붙여줘야 한다.- 예시 코드
MyGameInstance.h
// 값타입이기 때문에 메모리 관리를 할 필요가 없다고 함
TArray<FStudentData> StudentData;
// 헤더에서 언리얼 오브젝트 포인터를 선언할때는 TobjectPtr로 감싸야 함
// 엔진이 자동으로 메모리를 관리할 수 있게 UPROPERTY 매크로를 필수로 붙여줘야 함
UPROPERTY()
TArray<TObjectPtr<class Ustudent>> Students;
TMap의 구조와 활용
TMap의 특징
STL map과TMap의 비교STL map의 특징STL map은STL set과 동일하게 이진트리로 구성돼있음.- 정렬은 지원하지만, 메모리 구성이 효율적이지 않으며, 데이터 삭제시 재구축이 일어날 수 있음.
- 모든 자료를 순회하는데 적합하진 않음
언리얼 TMap의 특징- 키,밸류 구성의 튜플(Tuple) 데이터의
TSet구조로 구현돼있음 - 해시테이블 형태로 구축되어 있어 빠른 검색이 가능
- 동적 배열의 형태로 데이터가 모여있음
- 데이터는 빠르게 순회할 수 있음
- 데이터는 삭제해도 재구축이 일어나지 않음
- 비어있는 데이터가 있을 수 있음
TMultiMap을 사용하면 중복 데이터를 관리할 수 있음(중복 허용 필요 시 사용)
- 키,밸류 구성의 튜플(Tuple) 데이터의
- 동작 원리는
STL unordered_map과 유사함 - 키,밸류 쌍이 필요한 자료구조에 광범위하게 사용됨
TMap의 내부 구조

TSet을 Pair로 구현한 구조이기때문에 TSet과 성질이 동일하다.
🔗공식 문서 링크
이 글은 옵시디언에서 마크다운으로 작성되었습니다.
블로그에서는 지원하지 않는 포맷이있어, 보기 불편할 수 있습니다.
'UE5 > 이득우의 언리얼 프로그래밍 공부 노트' 카테고리의 다른 글
| [Part1] 13.언리얼 오브젝트 관리 1 - 직렬화 (1) | 2024.03.12 |
|---|---|
| [Part1] 12.언리얼 엔진의 메모리 관리 (0) | 2024.01.28 |
| [Part1] 10.언리얼 컨테이너 라이브러리(1) - Array와 Set (0) | 2023.12.24 |
| [Part1] 9.언리얼C++ 설계(3) - 델리게이트 (1) | 2023.12.17 |
| [Part1] 8.언리얼C++ 설계(2)-컴포지션 (1) | 2023.11.25 |