Unreal Engine(Blueprint) 快速开始与功能指南
Unreal Engine(Blueprint):前置条件、安装、Token、加入频道、发布订阅、事件、错误处理与排障;接口名与签名在构建时取自公开 SDK 接口定义。
Unreal Engine(Blueprint)端是同一套 C++ 引擎的蓝图暴露层:方法名首字母大写(Initialize、JoinChannelWithOptions),事件以委托形式暴露给蓝图。
前置条件
- Unreal Engine 5.2+,启用 NimeetRtc 插件。
- 与 C++ 端共用运行库;权限要求相同。
- 已拿到
appId与 Token 服务(见 控制台开通服务与获取凭证)。
安装
YourGame/Plugins/NimeetRtc/…
# 重新生成工程文件 → 在 .uproject 启用 → 编辑器里出现 “Nimeet RTC” 分类节点获取 Token
蓝图里不要硬编码 Token。推荐:登录流程拿到后端签发的 Token,存到 GameInstance 的一个字符串变量, 入会时作为 JoinChannelWithOptions 的参数传入。
加入频道
蓝图节点顺序(每个节点名都与接口定义一致):
Initialize(参数:AppId、可选的日志配置)SetChannelProfile(ChannelProfileLiveBroadcasting)EnableVideoStartPreviewJoinChannelWithOptions(Token、ChannelId、Uid、ChannelMediaOptions)
C++ 侧对应实现(可在自己的 Actor 里封装):
Engine->Initialize(Context);
Engine->SetChannelProfile(CHANNEL_PROFILE_LIVE_BROADCASTING);
Engine->EnableVideo();
Engine->StartPreview();
Engine->JoinChannelWithOptions(Token, ChannelId, Uid, Options);发布与订阅
蓝图节点:MuteLocalAudioStream、MuteLocalVideoStream、EnableLocalVideo、UpdateChannelMediaOptions。 屏幕共享:GetScreenCaptureSources(返回源列表)→ StartScreenCaptureByDisplayId / StartScreenCaptureByWindowId。
事件
蓝图事件(Event 节点):
| 事件 | 何时触发 |
|---|---|
OnJoinChannelSuccess | 入会成功 |
OnUserJoined | 远端用户加入 |
OnUserOffline | 远端用户离开 |
OnTokenPrivilegeWillExpire | 权限将过期 |
OnError | 运行时错误 |
错误处理
OnError给出err(声网错误号)与msg;- 同步节点返回
int,负值为错误; - 未实现能力返回
-4(ERR_NOT_SUPPORTED),蓝图侧会看到失败而不是静默成功。
排障
| 现象 | 原因 | 处理 |
|---|---|---|
| 编辑器里找不到节点 | 插件未启用/未编译 | 启用插件并重新编译 |
| 打包后节点失效 | 插件未打进包 | 检查 Plugins 目录与打包日志 |
| 事件不触发 | 未绑定委托 | 在 BeginPlay 里绑定,EndPlay 解绑 |
| 远端画面空白 | 未设置渲染 material | 绑定插件提供的 video surface 组件 |
| Android 包体积过大 | 未裁剪 ABI | 只保留目标 ABI |
下一步
平台信息
| 项 | 值 |
|---|---|
| 平台 | Unreal Engine(Blueprint) |
| 语言 | Blueprint / C++ |
| SDK 包 | NimeetRtcBlueprint |
| 接口版本 | 4.5.1 |
| 兼容参考 | 声网 unreal-blueprint 端 API |
本端公开接口与声网 unreal-blueprint 端 API 对齐;安装与运行要求见上面前置条件。
可用性
该端 SDK:正式可用。本页代码片段使用公开 API;运行时的能力边界以实际发布的 SDK 包为准。
加入频道链路
下列方法名、参数类型与返回值与同端 API 参考一致。一个平台若有多个重载,这里展示最常用的那一个;完整重载见同端 API 参考页。
| 步骤 | 接口 | 方法 | 重载数 |
|---|---|---|---|
| 加入频道 | __unattributed__ | JoinChannel | 1 |
| 离开频道 | __unattributed__ | LeaveChannel | 1 |
| 开启视频与本地预览 | IRtcEngine | EnableVideo | 1 |
| 创建实例 / 初始化 | IRtcEngine | Initialize | 1 |
| 订阅远端媒体 | IRtcEngine | MuteRemoteAudioStream | 1 |
| 续期 Token | IRtcEngine | RenewToken | 1 |
| 频道场景 | IRtcEngine | SetChannelProfile | 1 |
| 切换角色 | IRtcEngine | SetClientRole | 1 |
| 绑定本地画面 | IRtcEngine | SetupLocalVideo | 1 |
JoinChannel(token: const FString&, channelId: const FString&, uid: int64): int
LeaveChannel(): int
EnableVideo(): int
Initialize(context: const FRtcEngineContext&): int
MuteRemoteAudioStream(uid: int64, mute: bool): int
RenewToken(token: const FString&): int
SetChannelProfile(profile: ECHANNEL_PROFILE_TYPE): int
SetClientRole(options: FClientRoleOptions, clientroletype?: ECLIENT_ROLE_TYPE): int
SetupLocalVideo(canvas: const FVideoCanvas&): int事件与回调
该端 SDK 没有事件回调。
错误码
| 常量 | 值 |
|---|---|
VT_ERR_INTERNAL | 20 |
VT_ERR_INVALID_IMAGE_PATH | 3 |
VT_ERR_INVALID_LAYOUT | 5 |
VT_ERR_INVALID_VIDEO_SOURCE_TYPE | 2 |
VT_ERR_UNSUPPORT_IMAGE_FORMAT | 4 |
VT_ERR_VIDEO_SOURCE_NOT_READY | 1 |
平台 REST 层用 REST 错误码;SDK 层把连接/鉴权失败映射成声网错误号,映射表见 各端 SDK 错误标识。