声明一个函数,我们利用这个函数来进行打开资源管理器操作
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
|
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
|