3.9 KiB
3.9 KiB
UE5.7 连接 ue_scene 数据接口实操
目标
把当前后端的 ue_scene WebSocket 数据接到 UE5.7 工程里。
当前后端入口:
本次补的 UE 侧最小 C++ 文件:
这一步先做什么
先做最小闭环:
- UE 登录后端拿 token
- UE 连接
/ws - UE 订阅
ue_scene - UE 发送
sync_request - UE 收到原始 JSON
先不急着做完整场景生成。
第 1 步:把代码放进你的 UE5.7 工程
你的真实 UE 工程里应该有:
YourProject/
Source/
YourProject/
把这里的示例代码内容按模块名改进去:
Planet.Build.csUeSceneWebSocketClient.hUeSceneWebSocketClient.cpp
如果你的工程模块名不是 Planet,要把:
PLANET_API
改成你自己的模块导出宏。
第 2 步:启用插件
在 UE5.7 编辑器里启用:
WebSocketsHTTPJson Blueprint Utilities(可选)
启用后重启编辑器。
第 3 步:重新生成并编译工程
如果你是 Visual Studio 工作流:
- 右键
.uproject - 选择“生成 Visual Studio 项目文件”
- 打开
.sln - 编译
Development Editor
第 4 步:把组件挂到 BP_GlobeController
编译成功后:
- 打开
BP_GlobeController - 点击
添加 - 搜索:
Ue Scene Web Socket Client
- 把这个组件挂进去
第 5 步:填写后端参数
选中这个组件,在 细节 面板里填写:
Backend Base Url:http://127.0.0.1:8000Username:你的后端用户名Password:你的后端密码
默认频道已经是:
ue_scene
第 6 步:在蓝图里接事件
在 BP_GlobeController 里接这几个事件:
On Connected Changed
连接成功后:
- 调
Send Subscribe - 再调
Send Initial Sync Request
On Raw Message
先不要急着解析全部结构。
第一步只做:
- 把原始 JSON 打印出来
- 或保存到字符串变量
这样先确认 UE 确实收到后端消息。
On Error
把错误字符串打印到屏幕和日志里。
蓝图推荐连法
开始游戏时
开始游戏时- 调组件的
Connect To Backend
连接成功后
On Connected Changed分支- 如果
bConnected = true - 调
Send Subscribe - 调
Send Initial Sync Request
收消息后
On Raw Message打印字符串
第 7 步:先验证消息类型
你应该先在屏幕或输出日志里确认这些消息已经进来了:
connection_establishedsubscription_confirmeddata_frame
其中 data_frame 的第一条应是:
channel = ue_sceneupdate_type = full
第 8 步:再接 JSON 解析
当前这一步不建议纯蓝图手搓整个 JSON 结构。
更稳的是:
- 先在 C++ 里加一个简单解析层
- 只抽出
type - 只抽出
data.update_type - 只抽出
payload.layers.gpu_clusters.items
先把 gpu_clusters 画出来,再扩到别的层。
当前阶段建议
先完成这 3 件事就够了:
- UE 能成功连接后端
- UE 能收到
full快照 - UE 能把原始 JSON 打印出来
做到这一步,我们再继续补:
- JSON 结构体
ApplyFullSceneApplyIncrementalSceneGeoToWorld
一句最重要的提醒
现在先别在 UE 里同时做:
- WebSocket 连接
- 全量 JSON 解析
- 点位生成
- 海缆生成
一步一步来,先确认“连通”,再做“可视化”。这样最不容易卡死。