게임 개발/Unreal Engine

[UE4] Custom Asset Type 구현 - Import 하기

지노윈 2022. 2. 1. 22:58
반응형

다음의 두 글을 먼저 살펴보야 겠습니다.

[게임 개발/Unreal Engine] - [UE4] Custom Asset Type 구현 - Plugin 모듈 만들기

[게임 개발/Unreal Engine] - [UE4] Custom Asset Type 구현 - Asset 구현 & 등록

 

MyCustomAssetFactory.h에 FactoryCreateText 선언을 추가 합니다.MyCustomAssetFactory.cpp에 FactoryCreateText 함수 재정의 코드를 추가합니다.

UObject* UMyCustomAssetFactory::FactoryCreateText(
	UClass* InClass, UObject* InParent, FName InName, EObjectFlags Flags,
	UObject* Context,const TCHAR* Type, const TCHAR*& Buffer, const TCHAR* BuferEnd, FFeedbackContext* Warn)
{
	TArray<FString> Values;
	FString(Buffer).ParseIntoArray(Values, TEXT(","), true);

	FStaticConstructObjectParameters Params(InClass);
	Params.Outer = InParent;
	Params.Name = InName;
	Params.SetFlags = Flags;

	UMyCustomAsset* NewMyAsset = CastChecked<UMyCustomAsset>(StaticConstructObject_Internal(Params));
	if (NewMyAsset && (2 <= Values.Num()))
	{
		NewMyAsset->Value = FCString::Atoi(*Values[0]);
		NewMyAsset->Name = *Values[1];
	}

	return NewMyAsset;
}

UMyCustomAssetFactory 생성자 코드를 다음과 같이 수정합니다.

 

UMyCustomAssetFactory::UMyCustomAssetFactory(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer)
{
	SupportedClass = UMyCustomAsset::StaticClass();
	bCreateNew = false;
	bEditorImport = true;
	bText = true;
	Formats.Add(TEXT("myasset;My Custom Asset"));	// 확장자;디스크립션
}

bCreateNew, bEditorImport가 함께 양립할 수 없으며 bEditorImport를 true로 설정합니다.

bText를 true로 설정하고 FactoryCreateText를 구현합니다.

bText의 값이 false인 경우에는 FactoryCreateBinary를 구현해야 합니다.

Formats에서는 인포트 대상 text 파일의 확장자와 디스크립션을 설정합니다.

 

다음과 같이 text 데이터 파일을 만들고 TestPlugin.myasset으로 저장합니다.

이제 언리얼 에디터를 실행하고 TestPlugin.myasset 파일을 컨텐트 브라우저에 드래그&드롭하면 다음과 같이 자동으로 어셋이 생성됩니다.

관련 글 링크

[게임 개발/Unreal Engine] - [UE4] Custom Asset Type 구현 - Plugin 모듈 만들기

[게임 개발/Unreal Engine] - [UE4] C++ Module Generator 소개

[게임 개발/Unreal Engine] - [UE4] Custom Asset Type 구현 - Asset 구현 & 등록

[게임 개발/Unreal Engine] - [UE4] Custom Asset Type 구현 - Import 하기