当前位置: 首页 > web >正文

【UE5 C++】通过文件对话框获取选择文件的路径

目录

效果

步骤

源码


效果

步骤

1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块

2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重新从Visual Studio编译项目

3. 打开UE编辑器,新建一个父类为蓝图函数库的C++类,这里命名为“BPL_Functions”

4. 在头文件中添加一个蓝图可调用的函数,这里命名为“GetFbxPathByDialog”,表示通过文件对话框获取选择的.fbx文件的路径,该函数需要传入两个参数,一个是文件对话框的标题,还有一个是默认的路径

5. 在源文件中先导入“DesktopPlatformModule.h”和“IDesktopPlatform.h”,然后实现函数“GetFbxPathByDialog”

6.  创建一个控件蓝图,添加一个按钮和一个“EditableText”,按钮用于打开文件对话框,EditableText用于显示被选择文件的路径

在事件图表中设置当按钮点击后调用函数“GetFbxPathByDialog”,然后将获取的地址设置给EditableText

最终运行效果如文章开头所示。

源码

#pragma once#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "BPL_Functions.generated.h"UCLASS()
class GLOBEPAWNTEST_API UBPL_Functions : public UBlueprintFunctionLibrary
{GENERATED_BODY()public://通过文件对话框选择.fbx文件,返回选择文件的路径UFUNCTION(BlueprintCallable, Category = "File Utility", meta = (DisplayName = "Open FBX File Dialog"))static FString GetFbxPathByDialog(const FString& DialogTitle = TEXT("Select an FBX File"), const FString& DefaultPath = TEXT(""));
};
#include "BPL_Functions.h"#include "DesktopPlatformModule.h"
#include "IDesktopPlatform.h"FString UBPL_Functions::GetFbxPathByDialog(const FString& DialogTitle, const FString& DefaultPath)
{FString OutSelectedFilePath = TEXT("");IDesktopPlatform* DesktopPlatform = FDesktopPlatformModule::Get();if (DesktopPlatform){TArray<FString> OutFiles;const FString FileTypes = TEXT("FBX Files (*.fbx)|*.fbx"); // 筛选.fbx文件const void* ParentWindowHandle = nullptr;FString StartPath = DefaultPath;  // 文件对话框打开的默认地址if (StartPath.IsEmpty() || !FPaths::DirectoryExists(StartPath)){StartPath = FPaths::ProjectDir(); // 默认为项目根目录}uint32 SelectionFlag = 0; // 只能选择单个文件bool bFileSelected = DesktopPlatform->OpenFileDialog(ParentWindowHandle,DialogTitle,StartPath,       // 文件对话框打开的默认地址TEXT(""),        // 默认的选中文件FileTypes,       // 可选择文件的类型SelectionFlag,   // 选择文件的数量OutFiles         // 被选则文件的地址);if (bFileSelected && OutFiles.Num() > 0){OutSelectedFilePath = OutFiles[0]; // 第1个被选择的文件FPaths::NormalizeFilename(OutSelectedFilePath); // 标准化文件地址return OutSelectedFilePath;}}else{UE_LOG(LogTemp, Error, TEXT("DesktopPlatform module is not available."));}return OutSelectedFilePath;
}
http://www.xdnf.cn/news/11947.html

相关文章:

  • Unity与Excel表格交互热更方案
  • go语言学习 第4章:流程控制
  • 使用jstack排查CPU飙升的问题记录
  • CMap应用场景和例子
  • ABP-Book Store Application中文讲解 - Part 10: Book to Author Relation
  • 【Pandas】pandas DataFrame reset_index
  • HTTP常见的请求方法、响应状态码、接口规范介绍
  • c#开发AI模型对话
  • 回归任务和分类任务损失函数详解
  • 性能剖析:在 ABP 框架中集成 MiniProfiler 实现性能可视化诊断
  • 学习笔记(24): 机器学习之数据预处理Pandas和转换成张量格式[2]
  • 以人类演示视频为提示,学习可泛化的机器人策略
  • 鸿蒙仓颉语言开发实战教程:商城登录页
  • [网页五子棋][匹配模块]实现胜负判定,处理玩家掉线
  • 【C++】std::wstring` 和 C# 的 `String`(全称 `System.String`)
  • HRI-2025 | 大模型驱动的个性化可解释机器人人机交互研究
  • .Net Framework 4/C# 面向对象编程进阶
  • 机器学习基础(四) 决策树
  • Spitfire:Codigger 生态中的高性能、安全、分布式浏览器
  • Java 线程池原理详解
  • Rust 学习笔记:Box<T>
  • 更新 Docker 容器中的某一个文件
  • 根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
  • ffmpeg(三):处理原始数据命令
  • 旅游微信小程序制作指南
  • Webpack常见的插件和模式
  • IOS 打包账号发布上传和IOS Xcode证书配置
  • .Net Framework 4/C# 属性和方法
  • VS代码生成工具ReSharper v2025.1——支持.NET 10和C# 14预览功能
  • 【设计模式-4.9】行为型——命令模式