Unreal蓝图模式下的SDK集成教程

Agora Unreal SDK - Blueprint 实现

开发前的准备

  • Unreal 4.23 以上版本
  • Visual Studio 或 Xcode(版本根据 Unreal 配置要求而定)
  • 运行 Windows 7 以上系统的 PC 或 一台 Mac
  • Agora 注册账号一枚(免费注册,见官网 Agora.io
  • 如果你的企业网络存在防火墙,请在声网文档中心搜索「应用企业防火墙限制」,进行配置。

新建项目

首先我们要创建一个 Unreal 项目,然后将 Agora SDK 集成到项目中。

现在,让我们先从草图开始,创建一个项目。如果已经创建了项目,那么可以直接跳过这一步。

1.打开 Unreal Engine Editor,选择 New project。

2.在新项目面板上,在项目类型中选择 C++,然后给项目起个名,选择项目保存路径,完成创建。

image

3.确保在[your_project]/Source/[project_name]/[project_name].Build.cs文件的PrivateDependencyModuleNames一行,去掉注释。Unreal 默认是将它注释掉的,这会导致在编译的时候报错。

// Uncomment if you are using Slate UI
PrivateDependencyModuleNames.AddRange(new string[] { "UMG", "Slate", "SlateCore" });

集成Agora SDK

接下来我们在项目中集成 Agora SDK

1.将 SDK 复制到这个路径下 [your_project]/Plugins

2.把插件依赖添加到:

[your_project]/Source/[project_name]/[project_name].Build.cs 文件

的私有依赖(Private Dependencies)部分

PrivateDependencyModuleNames.AddRange(new string[] { "AgoraPlugin", "AgoraBlueprintable" });

3.重启 Unreal

4.点击 Edit->Plugin,在分类中找到 Project->Other,确定插件已经生效

image

创建游戏实例

在项目的 Content 界面中,点击右键,选择 Blueprint Class

image

在All Classes中输入“Game Instance”并选择 Game Instance

把新的 Game Instance 命名为“AgoraGameInstance_BP”

image
由于Game Instance会在其它类之前进行初始化,所以我们要先创建 AgoraGameIntance。双击进入 AgoraGameInstance_BP 的 Blueprint,在Blueprint的工作区域点击右键会显示出菜单,输入“Event Init”,并选择它。

image

拖拽出 Event Init,点击输出接口后,输入“Construct”,选择Construct Object from Class function。

image

在 Class 的下拉菜单中选择 Agora,然后将 Outer 的设定为从 Self 获取参数。

image

通过拖拽,将 Construct Agora 输出 Return Value 引脚设定为 Promote to variable。把新的变量名设定为“Agora”,点击“:eye:”图标,把它设定为 public。

image
“Agora”的输出,我们找到并选定为“Initialize”

image

创建 Game Mode(游戏模式)

Game Mode 将被用于切换 widgets。就像创建 Game Instance 一样,在 Blueprint 中创建新的 Game Mode:

命名为“GameMode_BP”
image

创建 Widgets(控件)

在项目的 Content 中创建新的目录 Widgets_BP。在这个目录下添加两个 Widgets:右键点击目录内容,然后选择 User Interface → Widget Blueprint:

image

将它们分别命名为“IntroductionWidget_BP”和“VideoCallWidget_BP”

image

Game Mode

回到 GameMode_BP,点击“+”添加两个 function,并分别命名为“SetInctoductionView”和“SetVideoCallView”。

添加两个变量,“IntroductionWidget_BP”和“VideoCallWidget_BP”,把他们的类型分别改为 Introduction Widget BP 和 Video Call Widget BP。

image

然后如下图所示来设置

image

Introduction Widget(介绍控件)

进入 InctoductionWidget_BP,创建控件的界面,就像图中所示的:

image

在EncriptionTypeComboBox中添加以下变量:

image

回到绘制模式中,找到 Event Construct 并执行,如图所示:

image

InctoductionWidget_BP 会从 AgoraGameInstance_BP 获得对象 Agora,在控件底部的 Text Block 中设定 Agora SDK 版本。回到设计界面,选择 Join 按钮,在右侧的 Event 中添加 On Clicked 事件

image

像图中一样,来设定事件执行逻辑:

image

image

Video Call Widgets(视频通话控件)

在 Demo 中找到 Content/ButtonTextures 目录(你不用打开这个项目,只需要在文件中找到它就行)。所有的按钮 texture 都保存在这里。在你项目的 content 中创建一个新的目录“ButtonTextures”,把这里所有的 texture 都拖拽放到里面。

进入 VideoCallLevel_BP,创建 widget 界面:

image

打开可视化视图,增加 isLocalAudioMuted、isLocalVideoMute 布尔变量,(Graph),增加 CurrentUserId 64 位整数变量。添加功能与执行逻辑如下图所示:

image

image

进入 Event Graph,然后按照以下步骤执行

创建新的 Level

进入 project Content,创建 Level 目录(如果之前没有创建)。右键单击目录,选择新 Level:

image

将 Level 重命名为“VideoCallLevel_BP”

image

选择这个 Leve,点击顶部的 Blueprint 图标,选择 Open Level Blueprint 选项:

如图中所示执行Event Begin Play

修改 World 与项目设置

进入 Window->World设置,把 GameMode 设为 GameMode_BP。

image

进入 Edit->Project设置,选择 Map&Modes,按照下图所示设定值。

image

好了,现在可以运行游戏了

image

下周我们将分享基于 Unreal C++ 与 Agora Unreal SDK 如何实现游戏中的实时音视频。

同时,我们还想邀请体验 Agora Unreal SDK Beta 版的开发者们填写一个有奖问卷,希望大家可以深度参与SDK 的功能规划。
image

3个回复
用户954069 回复于 2022-12-16 07:26 · IP属地中国

有蓝图版插件下载链接吗?

回复·0
用户954069 回复于 2022-12-19 01:51 · IP属地中国

您好,我用的demo也是蓝图插件,我生成的临时token默认uid是0可以加入房间,但是固定uid生成的token不能加入,UMG界面没有提供uid传参,请问在哪传参呢?

回复·1

找到了,临时token默认Uid是0,在这关卡蓝图改Uid就好了

推荐阅读
相关专栏
SDK 教程
167 文章
本专栏仅用于分享音视频相关的技术文章,与其他开发者和声网 研发团队交流、分享行业前沿技术、资讯。发帖前,请参考「社区发帖指南」,方便您更好的展示所发表的文章和内容。