Open Eu4ng opened 1 year ago
EquipmentDefinition은 ItemDefinition을 상속받는 데이터 애셋이다. ItemDefinition에 Convert() 함수를 만들어 에디터 유틸리티를 활용해 ItemDefinition 애셋을 EquipmentDefinition 애셋으로 변환하고 싶다.
// Fill out your copyright notice in the Description page of Project Settings. #include "FireArmDefinition.h" #if WITH_EDITOR #include "IAssetTools.h" #include "Factories/DataAssetFactory.h" #endif void UFireArmDefinition::Test() { FString PackagePath; TArray<FString> Paths; this->GetPathName().ParseIntoArray(Paths, TEXT("/")); Paths.Pop(); for(FString Path : Paths) { PackagePath += FString("/") + Path; } #if WITH_EDITOR UDataAssetFactory* DataAssetFactory = NewObject<UDataAssetFactory>(); IAssetTools::Get().CreateAsset(*this->GetName(), PackagePath, UEquipmentDefinition::StaticClass(), DataAssetFactory); #endif }
DataAssetFactory을 사용하기 위해 "UnrealEd" 모듈이 필요한데, Build.cs에 "UnrealEd" 추가 시 빌드 에러 발생
using UnrealBuildTool; public class TanksVr : ModuleRules { public TanksVr(ReadOnlyTargetRules target) : base(target) { PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; bEnforceIWYU = true; PublicDependencyModuleNames.AddRange(new ] { "Core", "CoreUObject", "Engine", "PhysXVehicles", "HeadMountedDisplay", "InputCore", "Networking", "Sockets", "Json", "JsonUtilities", "GameplayAbilities", "GameplayTags", "GameplayTasks", "AIModule", }); if (target.bBuildEditor) { PublicDependencyModuleNames.AddRange(new ] { "UnrealEd", }); } } }
목적
EquipmentDefinition은 ItemDefinition을 상속받는 데이터 애셋이다. ItemDefinition에 Convert() 함수를 만들어 에디터 유틸리티를 활용해 ItemDefinition 애셋을 EquipmentDefinition 애셋으로 변환하고 싶다.
문제
DataAssetFactory을 사용하기 위해 "UnrealEd" 모듈이 필요한데, Build.cs에 "UnrealEd" 추가 시 빌드 에러 발생
추정 원인
참고 링크