Unreal/C++

[UE4] 경로를 통해 File, Asset 리스트 가져오기

혜멘 2022. 2. 17. 16:32

Asset List / File List from Path

에셋 목록 가져오기

  • path 형식은 "/Game/Content/원하는폴더명"
  • path의 마지막 부분에 슬래시/가 있으면 인식 못함
  • FAssetData 를 반환
#include "AssetRegistry/AssetRegistryModule.h"
TArray<FAssetData> AMyPlayerController::GetMeshListByPath(FString RootFolderFullPath) {

    FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(FName("AssetRegistry"));
    IAssetRegistry& AssetRegistry = AssetRegistryModule.Get();

    TArray<FString> PathsToScan;
    PathsToScan.Add(RootFolderFullPath);
    AssetRegistry.ScanPathsSynchronous(PathsToScan);

    TArray<FAssetData> MeshAssetList;
    AssetRegistry.GetAssetsByPath(FName(*RootFolderFullPath), MeshAssetList);

    return MeshAssetList;
}

 

파일 목록 가져오기

  • path 형식은 "D:/원하는폴더명/"
  • NormalizeDirectoryName은 \를 /로 바꿔줌
  • 특정 확장자 파일만을 가져오고 싶다면 path + "*.확장자명" 해주면 됨
#include "HAL/FileManagerGeneric.h"
TArray<FString> AMyPlayerController::GetFileList(FString RootFolderFullPath) {

    FPaths::NormalizeDirectoryName(RootFolderFullPath);
    FFileManagerGeneric FileManager;
    TArray<FString> Files;
    Files.Empty();
    
    FString FinalPath = RootFolderFullPath + "/*";
    IFileManager::Get().FindFiles(Files, *FinalPath, true, false);
    
    return Files;
}