UEC++ 打开资源管理器并返回选中文件路径
声明一个函数,我们利用这个函数来进行打开资源管理器操作
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;