跳转到内容
返回
本页目录

使用文档

SimpleByteConversion 使用文档

SimpleByteConversion 的完整中文产品使用文档

支持的虚幻引擎版本:5.2–5.8

SimpleByteConversion 是一个为 Unreal Engine 蓝图系统设计的轻量级字节数据转换插件。
支持原生类型和结构体与字节/Json 之间的双向转换,所有功能均以蓝图节点暴露。


插件启用后自动生效。
所有功能通过蓝图节点访问,无需管理子系统或插件生命周期。


类型转换支持
int32转为/转自字节
int64转为/转自字节
float转为/转自字节
double转为/转自字节
bool转为/转自字节
FString转为/转自字节(UTF-8 编码)

这些函数适用于自定义协议、轻量存储或二进制通信。

(插入图片: BasicTypeConversion.jpg)


🧱 结构体 ↔ 字节数组 / Json 字符串

Section titled “🧱 结构体 ↔ 字节数组 / Json 字符串”

插件支持任何暴露给蓝图的 USTRUCT:

  • 与字节数组互转:Struct To Bytes / Bytes To Struct
  • 与 JSON 字符串互转:Struct To JsonString / JsonString To Struct

此功能使用 Unreal 的反射系统自动序列化和反序列化字段,同时保留原始命名和浮点精度。

⚠️ 不支持:包含对象引用的结构体,如 UObject*、TSoftObjectPtr、TWeakObjectPtr,或资源句柄如 FSoftObjectPath。

特性SimpleByteConversionUE 原生 FJsonObjectConverter
字段名保留✅ 是❌ 转为 camelCase
Float/Double 精度✅ float(9位), double(17位)❌ 默认精度较低
完整蓝图支持✅ 是⚠️ 部分支持 / 需要 C++

  • 所有节点均为 BlueprintPure——无需执行引脚
  • 可组合用于网络、文件存取或自定义协议

ShowAllFunction


Test

Test

Test


  • StringToBytes 和 BytesToString 使用 UTF-8 编码,确保跨平台安全转换
  • 结合使用 StructToBytes 和 StructToJsonString 可用于调试和网络消息

与 SimpleTCPClient 和 SimpleUDP 插件配合使用效果极佳。
一起使用可通过 TCP/UDP 发送结构化消息并解码。


打开 编辑 → 项目设置,进入 SimpleByteConversion 设置页,将 Language 设置为 English 或 中文。默认语言为英文。面向用户的界面、提示、通知和功能日志会立即更新,无需重启编辑器;公开 API 名称以及模块启动/关闭日志始终保持英文。

如有使用问题或合作需求,请前往联系页面。

基础类型提供 ToBytes 和 FromBytes 双向转换:

类型转字节从字节还原
int32IntToBytesBytesToInt
int64Int64ToBytesBytesToInt64
floatFloatToBytesBytesToFloat
doubleDoubleToBytesBytesToDouble
boolBoolToBytesBytesToBool
FStringStringToBytesBytesToString

所有节点均为 BlueprintPure,可以直接在蓝图中作为纯函数使用,无需执行引脚。

  • StructToBytes / BytesToStruct:结构体与二进制字节数组之间转换。
  • StructToJsonString / JsonStringToStruct:结构体与 JSON 字符串之间转换。

将插件文件夹复制到项目的 Plugins 目录,重启编辑器。

所有节点都在 SimpleByteConversion 分类下:

  • 基础类型:搜索 IntToBytes、FloatToBytes 等
  • 结构体:搜索 StructToBytes、StructToJsonString 等

在 C++ 中可以直接调用 ByteConverter 工具类:

#include "ByteConverter.h"
// 基础类型
TArray<uint8> Bytes;
ByteConverter::IntToBytes(42, Bytes);
// 结构体
FMyStruct Data;
ByteConverter::StructToBytes(&Data, FMyStruct::StaticStruct(), Bytes);
// JSON
FString JsonStr;
ByteConverter::StructToJsonString(&Data, FMyStruct::StaticStruct(), JsonStr);

网络发送前,将需要传输的结构化数据编码为字节数组:

1. 定义一个结构体(如 FPlayerState:位置、血量、状态)
2. 使用 StructToBytes 将结构体转为 TArray<uint8>
3. 通过 UDP/TCP 发送字节数组
4. 接收端使用 BytesToStruct 还原为结构体

使用 JSON 格式进行跨语言数据交换:

1. UE 端:StructToJsonString 将游戏数据转为 JSON 字符串
2. 通过 TCP/WebSocket 发送给 Python 程序
3. Python 端:json.loads() 直接解析
4. 反向同理:Python json.dumps() → UE JsonStringToStruct

将游戏存档序列化为二进制文件:

1. 将存档结构体通过 StructToBytes 转为字节数组
2. 使用 FFileHelper::SaveArrayToFile 写入磁盘
3. 读取时 FFileHelper::LoadFileToArray 加载字节数组
4. BytesToStruct 还原为存档结构体

传输两端需要约定字段、编码与数据格式。跨语言交互时应先用一组固定数据检查转换结果。