SuperTools
A comprehensive utility framework plugin for Unreal Engine 5.7, providing commonly used functions for game development including INI, UDP, Serial Port, Clipboard, File Dialog, JSON, HTTP, Screenshot and more.
Install / Use
/learn @jd-cg/SuperToolsREADME
SuperTools
基于 Unreal Engine 5.7 的综合工具框架插件,为沉浸式内容和交互开发提供常用功能函数。
作者: lostpanda
目录
概述
SuperTools 是一个功能强大的工具插件,旨在简化 Unreal Engine 5.7 中常见的沉浸式内容和交互开发任务。它提供了一套全面的蓝图可调用函数,涵盖文件操作、网络通信、系统工具等。
主要优势:
- 所有函数都支持蓝图调用,接口直观易用
- 适用情况下支持跨平台
- 易于扩展和自定义
- API 文档完善,支持中文关键词搜索
架构
graph TB
subgraph "MySuperTools 项目"
A[MySuperTools 模块]
end
subgraph "SuperTools 插件"
B[SuperToolsBlueprintLibrary]
subgraph "工具类"
C1[IniFileHelper]
C2[WindowsAPIHelper]
C3[UdpHelper]
C4[SerialPortHelper]
C5[ClipboardHelper]
C6[FileDialogHelper]
C7[SystemHelper]
C8[DataHelper]
C9[JsonHelper]
C10[FileIOHelper]
C11[ScreenshotHelper]
C12[HttpHelper]
C13[HardwareIdHelper]
end
subgraph "第三方库"
D[SuperToolsLibrary]
end
end
subgraph "外部调用"
E1[蓝图]
E2[C++ 代码]
end
A --> B
E1 --> B
E2 --> B
B --> C1
B --> C2
B --> C3
B --> C4
B --> C5
B --> C6
B --> C7
B --> C8
B --> C9
B --> C10
B --> C11
B --> C12
B --> C13
B --> D
style B fill:#4a9eff,stroke:#333,stroke-width:2px,color:#fff
style A fill:#6c757d,stroke:#333,stroke-width:2px,color:#fff
架构概览:
| 层级 | 组件 | 描述 |
|------|------|------|
| API 层 | USuperToolsBlueprintLibrary | 主入口,向蓝图和 C++ 暴露所有函数 |
| 工具层 | Utils/*Helper | 模块化的工具类,实现具体功能 |
| 集成层 | ThirdParty/SuperToolsLibrary | 外部库支持,运行时 DLL 加载 |
| 调用层 | 蓝图 / C++ | 使用插件函数的游戏代码 |
功能特性
INI 文件操作
从 INI 文件读写配置值,支持跨平台。
蓝图分类: SuperTools|INI
| 函数 | 描述 | 参数 |
|------|------|------|
| ReadIniString | 从 INI 文件读取字符串 | FilePath, Section, Key, DefaultValue |
| ReadIniInt | 从 INI 文件读取整数 | FilePath, Section, Key, DefaultValue |
| ReadIniFloat | 从 INI 文件读取浮点数 | FilePath, Section, Key, DefaultValue |
| ReadIniBool | 从 INI 文件读取布尔值 | FilePath, Section, Key, DefaultValue |
| WriteIniString | 向 INI 文件写入字符串 | FilePath, Section, Key, Value |
| WriteIniInt | 向 INI 文件写入整数 | FilePath, Section, Key, Value |
| WriteIniFloat | 向 INI 文件写入浮点数 | FilePath, Section, Key, Value |
| WriteIniBool | 向 INI 文件写入布尔值 | FilePath, Section, Key, Value |
注意: Windows 使用原生 API(
GetPrivateProfileString/WritePrivateProfileString),其他平台使用手动解析。
Windows API 封装
控制应用程序窗口属性和系统设置。
蓝图分类: SuperTools|Windows
| 函数 | 描述 | 返回类型 |
|------|------|----------|
| SetWindowTitle | 设置应用程序窗口标题 | bool |
| GetWindowTitle | 获取当前窗口标题 | FString |
| GetScreenResolution | 获取屏幕宽度和高度 | bool(输出:Width, Height) |
| SetWindowPosition | 设置窗口位置(X, Y) | bool |
| SetWindowSize | 设置窗口尺寸(Width, Height) | bool |
| MaximizeWindow | 最大化应用程序窗口 | bool |
| MinimizeWindow | 最小化应用程序窗口 | bool |
| RestoreWindow | 从最小化/最大化状态恢复窗口 | bool |
| BringWindowToFront | 将窗口置于前台 | bool |
平台说明: 这些函数仅在 Windows 上有效。其他平台返回
false或空值。
UDP 通信
通过 UDP 协议发送和接收数据,用于网络通信。
蓝图分类: SuperTools|UDP
发送函数
| 函数 | 描述 | 参数 |
|------|------|------|
| UdpSendBytes | 向 IP:Port 发送字节数组 | IP, Port, Data |
| UdpSendString | 向 IP:Port 发送字符串消息 | IP, Port, Message |
简化接收接口(推荐)
| 函数 | 描述 | 参数 |
|------|------|------|
| StartUdpReceive | 开始监听端口,返回句柄 | Port |
| GetUdpMessage | 获取最新消息(自动清空缓冲区) | Handle → OutMessage, OutSenderIP, OutSenderPort |
| GetAllUdpMessages | 获取所有消息(字符串数组) | Handle |
| StopUdpReceive | 停止监听并释放资源 | Handle |
高级接收接口
| 函数 | 描述 | 参数 |
|------|------|------|
| CreateUdpListener | 创建自定义缓冲区大小的监听器 | Port, MaxBufferSize |
| DestroyUdpListener | 销毁监听器并释放资源 | Handle |
| IsUdpListenerValid | 检查监听器句柄是否有效 | Handle |
| HasUdpData | 检查是否有数据可用 | Handle |
| GetUdpPacketCount | 获取已接收的数据包数量 | Handle |
| GetAllUdpPackets | 获取所有数据包(含发送方信息) | Handle |
| GetLatestUdpPacket | 获取最新的数据包 | Handle → OutPacket |
| ClearUdpBuffer | 清空接收缓冲区 | Handle |
| BytesToString | 将字节数组转换为 UTF-8 字符串 | Data |
串口通信
完整的串口通信功能,用于硬件集成。
蓝图分类: SuperTools|SerialPort
| 函数 | 描述 | 参数 |
|------|------|------|
| OpenSerialPort | 使用默认设置打开端口 | PortName, BaudRate(默认:9600) |
| OpenSerialPortWithConfig | 使用完整配置打开端口 | PortName, Config(结构体) |
| CloseSerialPort | 关闭串口 | Handle |
| IsSerialPortOpen | 检查端口是否打开 | Handle |
| SerialWriteBytes | 向端口写入字节数组 | Handle, Data |
| SerialWriteString | 向端口写入字符串 | Handle, Message |
| SerialReadBytes | 从端口读取字节 | Handle, MaxBytes |
| SerialReadString | 从端口读取字符串 | Handle, MaxBytes |
| GetSerialBytesAvailable | 获取缓冲区中可用字节数 | Handle |
| FlushSerialBuffers | 清空输入/输出缓冲区 | Handle, bClearInput, bClearOutput |
| GetAvailableSerialPorts | 列出所有可用的 COM 端口 | - |
串口配置(FSerialPortConfig):
BaudRate:通信速率(9600、115200 等)DataBits:每字节数据位(7、8)Parity:奇偶校验(None、Odd、Even)StopBits:停止位(1、1.5、2)FlowControl:流控制(None、Hardware、Software)
平台说明: 串口功能仅在 Windows 平台完整支持。
剪贴板操作
复制和粘贴文本及图像到系统剪贴板。
蓝图分类: SuperTools|Clipboard
文本操作
| 函数 | 描述 | 参数 |
|------|------|------|
| CopyToClipboard | 复制文本到剪贴板 | Text |
| GetFromClipboard | 从剪贴板获取文本 | → OutText |
| HasClipboardText | 检查剪贴板是否有文本 | - |
| ClearClipboard | 清空剪贴板内容 | - |
图像操作(仅 Windows)
| 函数 | 描述 | 参数 |
|------|------|------|
| CopyImageToClipboard | 复制图像文件到剪贴板 | ImagePath(PNG、BMP、JPG) |
| GetImageFromClipboard | 保存剪贴板图像到文件 | SavePath |
| HasClipboardImage | 检查剪贴板是否有图像 | - |
文件对话框
原生文件和文件夹选择对话框。
蓝图分类: SuperTools|FileDialog
| 函数 | 描述 | 参数 |
|------|------|------|
| OpenFileDialog | 单文件选择 | DialogTitle, DefaultPath, FileTypes → OutFilePath |
| OpenFileDialogMultiple | 多文件选择 | DialogTitle, DefaultPath, FileTypes → OutFilePaths |
| SaveFileDialog | 保存文件对话框 | DialogTitle, DefaultPath, DefaultFileName, FileTypes → OutFilePath |
| OpenFolderDialog | 文件夹选择 | DialogTitle, DefaultPath → OutFolderPath |
文件类型格式示例:
All Files (*.*)|*.*|Text Files (*.txt)|*.txt|Images (*.png;*.jpg)|*.png;*.jpg
系统操作
系统工具和外部应用程序控制。
蓝图分类: SuperTools|System
| 函数 | 描述 | 参数 |
|------|------|------|
| OpenURL | 在默认浏览器中打开 URL | URL |
| OpenFolderInExplorer | 在文件资源管理器中打开文件夹 | FolderPath |
| OpenFileWithDefaultApp | 使用默认应用程序打开文件 | FilePath |
| LaunchApplication | 启动外部应用程序 | ExecutablePath, Arguments, bHidden |
| GetEnvVariable | 获取环境变量值 | VariableName |
| GetFormattedTime | 获取格式化的当前时间 | Format(默认:%Y-%m-%d %H:%M:%S) |
| GetComputerName | 获取计算机名/主机名 | - |
| GetCurrentUserName | 获取当前用户名 | - |
时间格式说明符:
%Y- 年份(4 位数字)%m- 月份(01-12)%d- 日期(01-31)%H- 小时(00-23)%M- 分钟(00-59)%S- 秒(00-59)
数据处理
编码、哈希和数据转换工具。
蓝图分类: SuperTools|Data
Base64 编码
| 函数 | 描述 | 参数 |
|------|------|------|
| Base64Encode | 将字符串编码为 Base64 | Input |
| Base64Decode | 解码 Base64 字符串 | Input → OutDecoded |
哈希函数
| 函数 | 描述 | 参数 |
|------|------|------|
| MD5Hash | 计算字符串的 MD5 哈希值 | Input → 32 字符十六进制字符串 |
| MD5HashFile | 计算文件的 MD5 哈希值 | FilePath → OutHash |
| SHA256Hash | 计算字符串的 SHA256 哈希值 | Input → 64 字符十六进制字符串 |
| SHA256HashFile | 计算文件的 SHA256 哈希值 | FilePath → OutHash |
注意: Windows 上的 SHA256 使用 CryptoAPI 以获得最佳性能。
JSON 操作
解析和创建 JSON 数据,支持嵌套路径。
蓝图分类: SuperTools|JSON
读取值
| 函数 | 描述 | 参数 |
|------|------|------|
| JsonGetString | 从 JSON 获取字符串值 | JsonString, FieldName, DefaultValue |
| JsonGetInt | 从 JSON 获取整数值 | JsonString, FieldName, DefaultValue |
| JsonGetFloat | 从 JSON 获取浮点值 | JsonString, FieldName, DefaultValue |
| JsonGetBool | 从 JSON 获取布尔值 | JsonString, FieldName, DefaultValue |
| JsonGetStringArray | 从 JSON 获取字符串数组 | JsonString, FieldName → OutArray |
嵌套路径支持:
// 使用点号访问嵌套值
JsonGetString(JsonStr, "data.user.name", "Unknown")
JsonGetInt(JsonStr, "response.items.0.id", 0)
创建 JSON
| 函数 | 描述 | 参数 |
|------|------|------|
| MakeJsonString | 创建简单的键值对 JSON | Key, Value |
| MapToJson | 将 Map 转换为 JSON 字符串 | StringMap, bPrettyPrint |
| JsonToMap | 将 JSON 解析为 Map | JsonString → OutMap |
文件 I/O 操作
全面的文件和目录操作。
蓝图分类: SuperTools|FileIO
文本文件操作
| 函数 | 描述 | 参数 |
|------|------|------|
| ReadTextFile | 读取整个文本文件 | FilePath → OutContent |
| WriteTextFile | 写入文本到文件 | FilePath, Content, bAppend |
| ReadFileLines | 按行读取文件 | FilePath → OutLines |
| WriteFileLines | 按行写入文件 | FilePath, Lines, bAppend |
二进制文件操作
| 函数 | 描述 | 参数 |
|------|------|------|
| ReadBinaryFile | 读取二进制文件 | FilePath → OutData |
| WriteBinaryFile | 写入二进制文件 | FilePath, Data |
文件/目录检查
| 函数 | 描述 | 参数 |
|------|------|------|
| DoesFileExist | 检查文件是否存在 | FilePath |
| DoesDirectoryExist | 检查目录是否存在 | DirectoryPath |
| GetFileSizeBytes | 获取文件大小(字节) | FilePath |
文件/目录管理
| 函数 | 描述 | 参数 |
|------|------|------|
| CreateDirectoryPath | 创建目录(包括父目录) | DirectoryPath |
| DeleteFileAtPath | 删除文件 | FilePath |
| DeleteDirectoryAtPath | 删除目录及其内容 | DirectoryPath |
| CopyFileToPath | 复制文件 | SourcePath, DestPath, bOverwrite |
| MoveFileToPath | 移动/重命名文件 | SourcePath, DestPath |
目录列表
| 函数 | 描述 | 参数 |
|------|------|------|
| GetFilesInDir | 列出目录中的文件 | DirectoryPath, Extension, bRecursive
