E4-Unreal / test-simple-game-framework

simpleFramework for UE 5.1.0
MIT License
0 stars 1 forks source link

데이터 애셋 클래스 변환 #37

Open Eu4ng opened 1 year ago

Eu4ng commented 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",
                    });
          }
     }
}

추정 원인

참고 링크