게임 엔진/Unreal

[Unreal] [Example] 데이터 이용 방법 (DataAsset)

AlgorFati 2020. 5. 30. 11:38

Data Asset

Unreal engine에서 파일에 저장된 데이터를 읽어오거나,

파일로 데이터를 저장하는 형태로 데이터를 사용해야 하는 상황이 생길 수 있다.

이러한 상황에서 엔진에서 지원하는 data asset을 이용하면 효과적이다.

Data asset을 이용하기 위해서 먼저 사용하고자 하는 data 형태를 c++로 작성한다.

 

Data Asset 정의하기



#include "Engine/DataAsset.h"

UCLASS()
class TESTWORLD_API UCustomDataAsset : public UPrimaryDataAsset
{
	GENERATED_BODY()
public:	
	UPROPERTY(EditAnywhere)
	FString itemName;

	UPROPERTY(EditAnywhere)
	UBlueprint* itemBlueprint;

	UPROPERTY(EditAnywhere)
	FColor itemColor;

	UPROPERTY(EditAnywhere)
	FVector loc;

	UPROPERTY(EditAnywhere)
	FQuat rot;
};

이제 editor에서 실제 데이터 테이블 에셋 파일을 생성한다.

그 후, 콘텐츠 브로우저 -> 신규추가 -> 기타 -> 데이터 에셋 클래스 선택 창이 뜨면 CustomDataAsset를 선택하고,

만들어진 data asset에 원하는 데이터를 채운다.

 

 

Code에서 Data Asset 사용하기

#include "Public/CustomDataAsset.h"
#include "UObject/ConstructorHelpers.h"


...
static ConstructorHelpers::FObjectFinder<UDataAsset> DataAsset(TEXT("/Game/Data/CustomDataAsset.CustomDataAsset"));
if (DataAsset.Succeeded())
{
	UDataAsset* dataAsset = DataAsset.Object;
	UCustomDataAsset* data = Cast<UCustomDataAsset>(dataAsset);

	UE_LOG(LogTemp, Warning, TEXT(" Data asset loc : %f %f %f"), 
		data->loc.X, data->loc.Y, data->loc.Z);
}
...