声明一个函数,我们利用这个函数来进行打开资源管理器操作
UFUNCTION(BlueprintCallable, Category = "OpenWindowsFile")
TArray<FString> OpenWindowsFiles();
函数实现:
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;
}
然后我们在程序运行的时候调用一次这个函数
void AActor1::BeginPlay()
{
Super::BeginPlay();
TArray<FString> resStr = OpenWindowsFiles();
for (int i = 0; i < resStr.Num(); i++) {
UKismetSystemLibrary::PrintString(this, resStr[i]);
}
}
查看结果:
当程序运行就弹出了资源管理器,在选择了mx.sln文件之后,就将该文件的结果打印出来了
OpenFileDialog在UE中的定义:
/**
* 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;