UE4 WebUI使用指南2-通信

本文介绍了如何通过WebUI在UE(UnrealEngine)和网页之间实现双向通信。由于WebUI的浏览器内核限制,不支持某些新语法,调试时可以使用网页控制台。通信实现的关键是引入特定的JS代码,网页通过ue4函数发送消息到UE,UE则通过蓝图监听和响应。同时,网页也可以设置回调函数接收UE的消息。文章鼓励读者亲自实践以掌握这一技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面一篇WebUI的文章讲述的WebUI插件的下载,开启,在UE中创建,加载网页等。
本文继续讲述通过WebUI,UE和网页实现双向通信的实现思路。

一点说明

由于WebUI 使用的浏览器内核并不是最新的浏览器内核,所以一些新的JS语法和新的CSS并不支持。 比如不支持解构语法等。

所以在制作页面的时候需要注意这些问题点。

调试

如果遇到问题,需要调试,在WebUI加载网页之后,点击网页上任意元素,然后按下shift+ctrl+i 可以调出网页控制台,进行错误查看。

引入通信JS代码

要实现UE和页面的通信,首先需要在页面中引入一段js代码,如下所示:

"object"!=typeof ue||"object"!=typeof ue.interface?("object"!=typeof ue&&(ue={}),(ue.interface={}),(ue.interface.broadcast=function(e,t){if("string"==typeof e){var o=[e,""];void 0!==t&&(o[1]=t);var n=encodeURIComponent(JSON.stringify(o));"object"==typeof history&&"function"==typeof history.pushState?(history.pushState({},"","#"+n),history.pushState({},"","#"+encodeURIComponent("[]"))):((document.location.hash=n),(document.location.hash=encodeURIComponent("[]")))}})):(function(e){(ue.interface={}),(ue.interface.broadcast=function(t,o){"string"==typeof t&&(void 0!==o?e.broadcast(t,JSON.stringify(o)):e.broadcast(t,""))})})(ue.interface),(window.ue4=ue.interface.broadcast);window.ue=ue;

该js代码片段为WebUI官方推荐。

网页向UE发送消息

网页向UE发消息比较如意,通过ue4函数,既可向UE发送消息,ue4函数支持两个参数,name和data,name是string格式,data是json格式,如下所示:

ue4("cmd",{value:123})

UE接受消息

UE接受消息,通过蓝图即可监听webui的消息即可,如下图(蓝图)所示:

image.png
其中name和Data是网页传递过来的参数,Callback此处不详述,一般用不上。

网页接受UE消息

网页除了可以给UE发送消息外,还可以接受来自UE的消息。 只需要在ue.interface对象上面,添加一个回调函数,即可接受消息,如下所示:

ue.interface.add = function (data) {

  const { initValue } = JSON.parse(data);
  // todo
};

UE发送消息给网页

UE想网页发送消息的蓝图如下所示,调用webUI的Call方法,Function传递函数名称,Data 传递函数的参数

image.png

总结

本文提供了UE和网页的双向通信的方式的思路,具体细节需要大家自己多上手尝试。

太阳虽好,总要诸君亲自去晒,旁人却替你晒不来。

最后,关注公号“ITMan彪叔” 可以添加作者微信进行交流,及时收到更多有价值的文章。

### 关于Unreal Engine 5.4 WebUI的信息和教程 #### Unreal Engine 5.4中的WebUI特性概述 在Unreal Engine 5.4中,开发者能够利用HTML5和JavaScript来创建复杂的用户界面(Web UI),这些接口可以直接嵌入到游戏环境中。通过使用内置的支持库以及第三方插件,开发人员可以在浏览器内构建交互式的前端体验,并将其无缝集成至虚幻项目里[^1]。 #### 创建WebUI的具体方法 为了实现这一点,在Unreal Engine内部集成了多种技术手段: - **UMG(Widget Blueprint)**:虽然主要用于本地GUI设计,但在某些情况下也可用于处理来自网络的数据并显示给玩家。 - **HTTP请求模块**:允许脚本发出GET/POST等类型的HTTP调用来获取远程服务器上的资源或数据流。 - **WebSocket支持**:提供了一种实时双向通信机制,使得客户端与服务端之间能保持持久连接,这对于动态更新网页内容非常有用。 对于希望进一步了解如何具体实施上述功能的人来说,官方文档提供了详细的指南,包括但不限于设置环境变量、编写必要的C++代码片段以扩展核心功能等方面的内容。 ```cpp // Example C++ code snippet for setting up an HTTP request in UE5 FHttpModule* Http = &FHttpModule::Get(); TSharedRef<IHttpRequest, ESPMode::ThreadSafe> Request = Http->CreateRequest(); Request->OnProcessRequestComplete().BindLambda([](FHttpRequestPtr Req, FHttpResponsePtr Resp, bool bSuccess){ // Handle response here... }); Request->SetURL("https://example.com/api/data"); Request->SetVerb("GET"); Request->ProcessRequest(); ``` 此外,社区论坛也是寻找灵感的好地方;许多有经验的开发者会在那里分享自己的见解和技术诀窍,帮助新手更快地上手这项新技术。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值