声明一个函数,我们利用这个函数来进行打开资源管理器操作

1
2
UFUNCTION(BlueprintCallable, Category = "OpenWindowsFile")
TArray<FString> OpenWindowsFiles();

函数实现:

1
2
3
4
5
6
7
8
9
10
TArray<FString> AActor1::OpenWindowsFiles()
{
TArray<FString> AbsoluteOpenFileNames;//获取的文件绝对路径
FString ExtensionStr = TEXT("*.*");//文件类型

IDesktopPlatform* DesktopPlatform = FDesktopPlatformModule::Get();
DesktopPlatform->OpenFileDialog(nullptr, TEXT("文件管理器"), FPaths::ConvertRelativePathToFull(FPaths::ProjectDir()), TEXT(""), *ExtensionStr, EFileDialogFlags::None, AbsoluteOpenFileNames);
return AbsoluteOpenFileNames;

}

然后我们在程序运行的时候调用一次这个函数

1
2
3
4
5
6
7
8
void AActor1::BeginPlay()
{
Super::BeginPlay();
TArray<FString> resStr = OpenWindowsFiles();
for (int i = 0; i < resStr.Num(); i++) {
UKismetSystemLibrary::PrintString(this, resStr[i]);
}
}

查看结果:
E:/UEProject/UE4C/mx/mx.sln

1
2
// 异步加载
m_Streamable.RequestAsyncLoad(SoftMesh.ToSoftObjectPath(), FStreamableDelegate::CreateUObject(this, &UTestGameInstance::LoadSourceCallback));

当程序运行就弹出了资源管理器,在选择了mx.sln文件之后,就将该文件的结果打印出来了

OpenFileDialog在UE中的定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/** 
* Opens the "open file" dialog for the platform
*
* @param ParentWindowHandle 此对话框的父窗口的本机句柄
* @param DialogTitle 对话框窗口标题的文本
* @param DefaultPath 文件对话框最初打开的路径
* @param DefaultFile 对话框最初将选择的文件
* @param Flags 对话的详细信息。看到EFileDialogFlags。
* @param FileTypes 要在对话框中显示的类型过滤器。该字符串应该是一个“|”分隔的(描述|扩展列表)对列表。扩展列表用“;”分隔。
* @param OutFilenames 在对话框中选择的文件名
* @param OutFilterIndex 对话框中选择的类型
* @如果成功选择文件,则返回true
*/
virtual bool OpenFileDialog(const void* ParentWindowHandle, const FString& DialogTitle, const FString& DefaultPath, const FString& DefaultFile, const FString& FileTypes, uint32 Flags, TArray<FString>& OutFilenames, int32& outFilterIndex ) = 0