스토리텔링 개발자

[UE4] 구조체(Struct) 본문

개발/언리얼 엔진

[UE4] 구조체(Struct)

김디트 2021. 10. 14. 17:43
728x90

개요

언리얼 엔진에 있는 타입을 크게 나눠보면 아래와 같습니다.

 

  1. UObject를 위시하는 클래스 타입
  2. 구조체 타입

 

이 중 2번, 구조체에 대해서 정리해 보았습니다.

 

 

 

구조체의 선언

선언부는 UObject 기반 클래스와 같습니다.

 

  1. GENERATED_BODY() 매크로로 리플랙션 관련 함수들을 추가
  2. 생성자 선언 / 정의

 

USTRUCT()
struct FTempStruct
{
	GENERATED_BODY()
public:
	FTempStruct() {}
};

 

 

 

구조체와 클래스의 차이

구조체를 사용하는 이유는 UObject 클래스가 구조체보다 무겁기 때문입니다.

 

구조체에서는 대표적으로 아래와 같은 기능들을 제공하지 않습니다.

 

가비지 컬렉팅 불가

 

구조체는 가비지 컬렉션의 관리를 받지 않습니다.

즉, 동적 할당을 한 경우엔 스마트 포인터를 적극적으로 사용해야 합니다.

 

함수 직렬화 기능 불가

 

구조체는 함수 직렬화를 제공하지 않습니다.

즉, 블루프린트용 함수를 만들 수 없다는 뜻입니다.

 

 

 

USTRUCT와 Raw Struct의 차이?

C++의 구조체를 직접 사용하지 않는 이유는 무엇일까요.

 

직렬화 기능 제공 유무

 

Raw 구조체를 사용하면 변수의 직렬화를 사용할 수 없습니다.

즉, 에디터 및 블루프린트에서 구조체에 접근할수도 다룰수도 없다는 뜻입니다.

 

리플렉션 기능 제공 유무

 

언리얼 오브젝트는 기본적으로 리플렉션 기능을 제공합니다.

하지만 엔진의 기능이므로 Raw 구조체에서는 사용할 수 없습니다.

참고 : [UE4] 언리얼 프로퍼티 시스템(리플렉션 시스템)(Unreal Property System)

728x90
Comments