实现Vue3和UE5.2进行通信(Pixel Streaming)

这篇具有很好参考价值的文章主要介绍了实现Vue3和UE5.2进行通信(Pixel Streaming)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


这篇文章简单讲解一下如何实现vue3和UE5进行数据的通信。
如果有同学还不清楚如何在Vue3中实现Pixel Streaming的播放器,请查看这篇文章 Vue3中集成Unreal 5.2 像素流(Pixel Streaming插件)。

1. 从UE5.2到前端页面的通信

现在我们想让UE5.2也就是后端发送给前端一些消息,然后前端接收到消息后并根据不同的消息进行不同的处理。

1.1 编写蓝图脚本

打开UE5.2,新建一个空白项目,这些操作上一篇博客已经讲过,就不在此过多赘述了。
打开内容浏览器,在内容文件夹下新建一个文件夹,命名为Blueprints
实现Vue3和UE5.2进行通信(Pixel Streaming)
然后,双击打开该文件夹,在右边空白处,右键然后新建一个蓝图类,选取父类为Actor,然后将其命名为SendMessage。
实现Vue3和UE5.2进行通信(Pixel Streaming)
然后,双击打开SendMessage蓝图类:
我们在此为了简单调试,创建一个按下键盘数字键3就会发送给前端一个字符串的蓝图类,功能比较简单,很好实现,如果有不懂的地方可以看一看Unreal蓝图相关的知识,官方文档介绍的比较仔细。
如下图所示:
实现Vue3和UE5.2进行通信(Pixel Streaming)
最后,将该蓝图类拖拽到场景中即可。

1.2 编写前端的响应函数

在上一篇博客中,我们已经成功在vue中集成了UE5.2的像素流,并且可以实时展示。
现在,我们来实现接收后端发送的消息的功能。
编写一个响应函数,命名为myHandleResponseFunction,功能就是在接收的消息后,在当前页面弹出一个提示框,并展示消息的内容。
代码如下,将其放在methods里面:
实现Vue3和UE5.2进行通信(Pixel Streaming)

myHandleResponseFunction(response) {
			let popupContainer = document.createElement('div');
			popupContainer.style.position = 'fixed';
			popupContainer.style.top = '50%';
			popupContainer.style.left = '50%';
			popupContainer.style.transform = 'translate(-50%, -50%)';
			popupContainer.style.backgroundColor = 'rgba(0, 0, 0, 0.8)';
			popupContainer.style.color = '#fff';
			popupContainer.style.padding = '20px';
			popupContainer.style.borderRadius = '5px';
			popupContainer.style.zIndex = '9999';

			// 创建展示消息的文本节点
			var messageNode = document.createTextNode(response);
			popupContainer.appendChild(messageNode);

			// 将提示窗口添加到 body 元素中
			document.body.appendChild(popupContainer);

			// 设置定时器,在一定时间后移除提示窗口
			setTimeout(function() {
				document.body.removeChild(popupContainer);
			}, 3000);
		},

在mounted里面添加注册我们编写的监听/响应函数,通过pixelstreaming对象的addResponseEventListener函数即可实现。

stream.addResponseEventListener("handle_responses", this.myHandleResponseFunction);

如果要移除注册,通过removeResponseEventListener函数即可。

stream.removeResponseEventListener("handle_responses");
1.3 功能验证

首先,在UE5.2中打开信令服务器,并同时流送关卡编辑器。
实现Vue3和UE5.2进行通信(Pixel Streaming)
单击运行按钮,运行关卡。
实现Vue3和UE5.2进行通信(Pixel Streaming)
启动vue项目:

npm run serve

打开http://localhost:8080/,访问页面。
现在,可以成功在浏览器中看到关卡页面。
实现Vue3和UE5.2进行通信(Pixel Streaming)
回到UE5.2中,单击一下关卡,让鼠标聚焦在编辑器里,此时按下数字键3,就可以看到浏览器中弹出提示窗口。
实现Vue3和UE5.2进行通信(Pixel Streaming)
到此为止,我们就完成了从UE5.2到前端信息的传递;如果想了解更多,大家可以阅读一下源码。

2. 从Vue3到UE5.2的信息发送

2.1 UE5.2蓝图的设计

还是为了简单起见,我们仅仅将接收到的消息输出,更多复杂的功能大家可以自己去实现。
仿照上面,创建一个新的蓝图类,命名为GetMessage
实现Vue3和UE5.2进行通信(Pixel Streaming)

2.2 前端发送消息功能的实现

首先,我们在播放器中编写一个新的按钮,命名为Send Message,为其绑定一个点击触发的函数——发送一个字符串test
发送文本时,我们利用pixelStreaming对象的emitUIInteraction函数,该函数不仅仅可以发送字符串,还可以发送JSON格式的对象。

温馨提示

在下面的代码中,我使用到了LabelledButton这个类,这个类是虚幻官方写的,但是它并没有被暴露出来,如果你直接通过import LabelledButton from '@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.2';,这是错误的!

现在,我来交给你们如何引入它,在虚幻官方的github仓库中下载这两个库,然后把它们放到你的vue项目中,然后打开pixelstreamingfrontend-ui.ts这个文件,这最后一行添加一句代码:

export {LabelledButton} from './UI/LabelledButton';

实现Vue3和UE5.2进行通信(Pixel Streaming)
实现Vue3和UE5.2进行通信(Pixel Streaming)
现在,在你的项目中就可以使用这个类了,别放了修改import的路径。

我之所以使用这个类,是因为我阅读过虚幻关于PixelStreaming前端这两个库的源码,已经比较了解其中的逻辑了,所以我为了方便起见,直接引用了它并没由暴露出来的类。

其实大家完全可以自己实现一个更好看的按钮来代替它。

代码如下:

const SendTextButton = new LabelledButton(
	'Send Message',
	 'Send'
 );
 SendTextButton .addOnClickListener(() => {
     stream.emitUIInteraction("test");
 });
const commandsSectionElem = application.configUI.buildSectionWithHeading(
     application.settingsPanel.settingsContentElement,
     'TestOrders'
 );       
 commandsSectionElem.appendChild(restartStreamButton.rootElement);

现在打开播放器中的设置面板,可以看到多了一个Send Message的按钮:
实现Vue3和UE5.2进行通信(Pixel Streaming)

2.3 功能验证

首先,像上面一样,在UE5.2中单击启动按钮,然后启动信令服务器并流送关卡编辑器。
然后,启动vue项目,在浏览器输入地址打开页面。
单击一下Send按钮,可以看到UE5关卡编辑器中左上角出现了test文本,说明发送消息成功。

实现Vue3和UE5.2进行通信(Pixel Streaming)

3. 参考资源

Unreal Engine 5.2官方文档文章来源地址https://www.toymoban.com/news/detail-481700.html

到了这里,关于实现Vue3和UE5.2进行通信(Pixel Streaming)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【UE5】UE5与Python Socket通信中文数据接收不全

    最近在使用UE的Socket模块与Python服务器进行通信时遇到了一些坑,特此记录一下。 先来复现一下问题,这里只截取关键代码。 UE端: Python端: 运行结果: UE端发送的数据: Python端接收到数据: 可以看到数据容量并没有超出缓存上限,且Python端接收的数据都有做utf-8的编码转

    2024年02月14日
    浏览(42)
  • 【Vue3】3-3 : 组件之间是如何进行互相通信的

    本书目录:点击进入 一、组件之间为什么要做通信 二、组件之间通信方式 2.1、父传子:由传递属性实现 stage 1:申明 (即定义) stage 2:注册 stage 3:使用 【示例】:父组件将 title 和 count 传递给子组件 (普通数据 和 响应式数据的传递) >  代码  >  效果 2.2、子传父

    2024年01月17日
    浏览(38)
  • 关于UE4/UE5 无法正确使用VS2019进行编译运行(乱码报错)

            这是一个让我百思不得其解的问题,无论是上网查资料还是怎样去调整设置。总是感觉无法正确、彻底的解决。         通过学习,发现问题唯一的根源其实是VS的语言设置与你电脑系统的语言设置不兼容。我们只需要对系统的区域语言进行更改即可正常运行。如果

    2024年02月11日
    浏览(48)
  • 【vue3】前端应用中使用WebSocket与服务器进行通信并管理连接状态。

    1、写一个hook函数 url 是WebSocket的服务器地址,其中 Math.random() 用于生成一个随机数,以避免缓存问题。 onConnected 、 onDisconnected 和 onError 是连接建立、断开和出错时的回调函数,你可以根据实际需求来定义它们。 onMessageDefault 是当接收到消息时的默认处理函数,在这里将接收

    2024年02月09日
    浏览(62)
  • 快速掌握Vue3:速成Vue3前端开发看这篇就够啦

    1.1-Vue3的优点 Vue3支持Vue2额大多数特性。 更好的支持TypeScript。 打包大小减少41%。 初次渲染快55%,更新渲染快133%。 内存减少54%。 使用proxy代替defineProperty实现数据响应式。 重写虚拟DOM的实现和Tree-Shaking。 2.1-setup 我们可以跟以前定义data和methods,但是vue3中我们更推荐使用se

    2024年02月13日
    浏览(47)
  • 使用vue3简单实现WebSocket通信

    关于WebSocket通信的简单介绍: 握手阶段:在建立WebSocket连接之前,客户端需要发送一个HTTP请求到服务器,请求升级为WebSocket协议。这个过程称为握手(Handshake)。如果服务器支持WebSocket协议,它将返回带有特定标头的HTTP响应,表示握手成功。 建立连接:客户端收到服务器的

    2024年02月16日
    浏览(37)
  • UE5实现相机水平矫正

    UE5实现相机水平矫正 思路,用HIT获得基于相机视角的 离散采样点,然后根据距离相机距离进行权重分析。 距离越近,采样约中心,即越接近人眼注意点,最后算出加权平均高度,赋予给相机,相机将水平旋转改为0, 大功告成~ 优化,最后再根据相机原本的俯仰角角度,用于

    2024年02月06日
    浏览(42)
  • UE5实现模型压平效果

    模型压平 功能是GIS系统中的一个常用功能,可以用于模型的替换,数据的对比等。本文在UE5中通过 修改材质 的方式实现,实现模型压平的功能,包括常规建模的 StaticMesh ,以及CesiumForUnreal的 3DTiles ,都可以实现压平效果。并解决压平后出现的 闪面 以及高度错乱问题,使最

    2024年02月05日
    浏览(95)
  • Vite + Vue3 + Electron实现进程通信

    Electron 是一个基于 Chromium 和 Node.js 的桌面应用程序开发框架,而 Vue3 则是一种流行的前端框架。将两者结合使用可以快速地打造出跨平台的桌面应用程序。在这种组合中,Electron 提供了强大的桌面应用开发能力,而 Vue3 则提供了易用的 UI 组件和开发体验 Electron 内置了 Chrom

    2024年02月12日
    浏览(46)
  • 【干货】Vue2.x 组件通信方式详解,这篇讲全了

    vue是数据驱动视图更新的框架, 我们平时开发,都会把页面不同模块拆分成一个一个vue组件, 所以对于vue来说组件间的数据通信非常重要,那么组件之间如何进行数据通信的呢? 首先我们需要知道在vue中组件之间存在什么样的关系, 才更容易理解他们的通信方式。 一般我们分

    2023年04月27日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包