개발/언리얼 엔진
[UE4] 구조체(Struct)
김디트
2021. 10. 14. 17:43
728x90
개요
언리얼 엔진에 있는 타입을 크게 나눠보면 아래와 같습니다.
- UObject를 위시하는 클래스 타입
- 구조체 타입
이 중 2번, 구조체에 대해서 정리해 보았습니다.
구조체의 선언
선언부는 UObject 기반 클래스와 같습니다.
- GENERATED_BODY() 매크로로 리플랙션 관련 함수들을 추가
- 생성자 선언 / 정의
USTRUCT()
struct FTempStruct
{
GENERATED_BODY()
public:
FTempStruct() {}
};
구조체와 클래스의 차이
구조체를 사용하는 이유는 UObject 클래스가 구조체보다 무겁기 때문입니다.
구조체에서는 대표적으로 아래와 같은 기능들을 제공하지 않습니다.
가비지 컬렉팅 불가
구조체는 가비지 컬렉션의 관리를 받지 않습니다.
즉, 동적 할당을 한 경우엔 스마트 포인터를 적극적으로 사용해야 합니다.
함수 직렬화 기능 불가
구조체는 함수 직렬화를 제공하지 않습니다.
즉, 블루프린트용 함수를 만들 수 없다는 뜻입니다.
USTRUCT와 Raw Struct의 차이?
C++의 구조체를 직접 사용하지 않는 이유는 무엇일까요.
직렬화 기능 제공 유무
Raw 구조체를 사용하면 변수의 직렬화를 사용할 수 없습니다.
즉, 에디터 및 블루프린트에서 구조체에 접근할수도 다룰수도 없다는 뜻입니다.
리플렉션 기능 제공 유무
언리얼 오브젝트는 기본적으로 리플렉션 기능을 제공합니다.
하지만 엔진의 기능이므로 Raw 구조체에서는 사용할 수 없습니다.
728x90