- 범용적으로 사용하는 경우에 헤더 파일을 생성해 사용함
- C++클래스를 생성 (CustormStructs)
- "CustormStructs.generated.h"를 include해줌
include "CustormStructs.generated.h"
- 일반적인 구조체 생성
struct CustomStruct
{
public:
AActor* actor;
int32 i;
float f;
}
- 구조체 앞에 USTRUCT()를 붙여준다.
- Atomic : 구조체가 항상 하나의 단위로 직렬화됨을 의미함
- BlueprintType : 구조체가 블루프린트에서 사용될 수 있음을 의미함
STRUCT(Atomic,BlueprintType)
struct FCustomStruct
{
public:
AActor* actor;
int32 i;
float f;
}
- 구조체 제일 첫 줄에
GENERATED_USTRUCT_BODY
매크로를 넣어준다.
- 해당 Struct가 Unreal object임을 알리는 매크로
STRUCT(Atomic,BlueprintType)
struct FCustomStruct
{
GENERATED_USTRUCT_BODY
public:
AActor* actor;
int32 i;
float f;
}
- 댕글링 포인터 문제에 대해 보호받기 위해 구조체의 모든 멤버 변수에 UPROPERTY 매크로를 붙인다.
- GC의 수집 대상이 되어 가비지 컬렉팅 주기 때 오브젝트가 파괴되며 문제가 발생할 수 있음
STRUCT(Atomic,BlueprintType)
struct FCustomStruct
{
GENERATED_USTRUCT_BODY
public:
UPROPERTY(EditAnywhere,BlueprintReadWrite)
AActor* actor;
UPROPERTY(EditAnywhere,BlueprintReadWrite)
int32 i;
UPROPERTY(EditAnywhere,BlueprintReadWrite)
float f;
}