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

news2024/11/23 12:32:03

文章目录

      • 1. 从UE5.2到前端页面的通信
        • 1.1 编写蓝图脚本
        • 1.2 编写前端的响应函数
        • 1.3 功能验证
      • 2. 从Vue3到UE5.2的信息发送
        • 2.1 UE5.2蓝图的设计
        • 2.2 前端发送消息功能的实现
        • 2.3 功能验证
      • 3. 参考资源

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

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

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

1.1 编写蓝图脚本

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

1.2 编写前端的响应函数

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

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中打开信令服务器,并同时流送关卡编辑器。
开启信令服务器并流送关卡编辑器
单击运行按钮,运行关卡。
运行关卡
启动vue项目:

npm run serve

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

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

2.1 UE5.2蓝图的设计

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

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

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

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的按钮:
在这里插入图片描述

2.3 功能验证

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

在这里插入图片描述

3. 参考资源

Unreal Engine 5.2官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/643188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.数据操作

SQL句子中语法格式提示: 1.中括号([])中的内容为可选项; 2.[,...]表示,前面的内容可重复; 3.大括号({})和竖线(|)表示选择项,在选择…

Jenkins集成钉钉通知插件的具体步骤怎么做你知道吗?

最近公司要求工作务必使用钉钉,其他聊天软件不再用于工作沟通了。虽然很抓狂,但是上面的决定不可违逆,只好转战钉钉。虽然强制使用钉钉挺令人反感的,但阿里在这款软件上确实下了些功夫,比如jenkins集成钉钉通知插件后&…

(原创)自定义控件:写一个瀑布流效果

效果展示 最近要业务中需要做一个瀑布流的效果,按理说正常的瀑布流网上已经有很多解决方案了。 但我还是想自己尝试写一下。 又因为这块要求有一点特殊,下面大概讲下需求: 首先子元素的对方肯定还是和其他瀑布流一样,按照子View的…

对任意给定的NFA M进行确定化操作(附详细注释)

对任意给定的NFA M进行确定化操作&#xff08;附详细注释&#xff09; DFA实体类 package Beans;import java.util.List;public class DFA {private List<Integer> K; // 状态集private char[] letters; // 字母表private String[][] f; // 转换函数priva…

每天五分钟机器学习:梯度下降的学习率太大或太小会有什么问题?

本文重点 我们前面学习了梯度下降算法,其中有一个重要的参数就是学习率。在使用梯度下降算法时,学习率是一个非常重要的参数。学习率的大小会直接影响梯度下降算法的收敛速度和精度。如果学习率太大或太小,都会对梯度下降算法的表现产生负面影响。 学习率太大的影响 学习率…

Debezium系列之:记录一次生产环境SQLServer数据库删除日志文件造成debezium connector数据不采集的解决方法

Debezium系列之:记录一次生产环境SQLServer数据库删除日志文件造成debezium connector数据不采集的解决方法 一、背景二、快速定位问题三、详细的解决步骤四、确认debezium connector恢复对数据库的数据采集五、经验总结一、背景 SQLServer数据库的日志把磁盘打满了,需要删除…

空间计算时代下,中国能否诞生下一个“苹果”?

“one more thing&#xff01;” 6月6日的WWDC大会上&#xff0c;苹果CEO库克激动地喊出这句乔布斯的口头禅。随后&#xff0c;苹果的Vision Pro头显产品正式亮相&#xff0c;库克形容它是“革命性产品”“开启空间计算时代”。 当一个类似滑雪镜的头显设备出现在屏幕&#x…

Spark大数据处理学习笔记1.5 掌握Scala内建控制结构

文章目录 一、学习目标二、条件表达式&#xff08;一&#xff09;语法格式&#xff08;二&#xff09;执行情况&#xff08;三&#xff09;案例演示任务1、根据输入值的不同进行判断任务2、编写Scala程序&#xff0c;判断奇偶性 三、块表达式&#xff08;一&#xff09;语法格式…

[C国演义] 第二章

第二章 目标和题意分析步骤dp的含义递推公式dp数组初始化遍历顺序 代码 目标和 力扣链接 给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 ‘’ 或 ‘-’ &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 &#xff1a; 例如&#xff0…

充电桩测试系统厂家TK4860B非车载充电机检定装置

温湿度测量&#xff08;选配件&#xff09;&#xff1a;可选配蓝牙温湿度计&#xff0c;通过蓝牙连接平板电脑&#xff0c;完成现场温湿度测量&#xff0c;并自动记录数据。 无线平板操作&#xff0c;可通过拍照保存现场信息&#xff0c;完成自动测试。 一体式结构&#xff0…

qss中样式表不生效

qt问题记录&#xff1a; 1.widget是被提升的窗口&#xff08;被提升为Form&#xff09;&#xff0c;我设置了样式表后它的效果如下图&#xff0c;但是实际跑的时候它的样式表没有显示。 当我取消提升后&#xff08;让它变成普通的QWidget后)&#xff0c;它就正常显现了。 我突…

buuctf re

基本汇编指令mov A B **将B的值复制到A里面去**push A **将A压栈**pop A **将A从栈中弹出来**call Funtion **跳转到某函数**ret --> 相当于 pop ip **从栈中pop出一个值放到EIP里面**je jz **如果ZF&#xff08;0标志位&#xff09;1&#xf…

AI实战营第二期 第七节 《语义分割与MMSegmentation》——笔记8

文章目录 摘要主要特性 案例什么是语义分割应用&#xff1a;无人驾驶汽车应用&#xff1a;人像分割应用&#xff1a;智能遥感应用 : 医疗影像分析 三种分割的区别语义分割的基本思路按颜色分割逐像素份分类全卷积网络 Fully Convolutional Network 2015存在问题 基于多层级特征…

基于Java医院门诊挂号系统设计与实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

02-Vue中的v-show和v-if

前言 一、v-show与v-if的共同点 我们都知道在 vue 中 v-show 与 v-if 的作用效果是相同的(不含v-else)&#xff0c;都能控制元素在页面是否显示 在用法上也是相同的 <Model v-show "isShow"/> <Model v-if"isShow"/>当表达式为true的时候&…

SpringSecurity过滤指定url【.antMatchers(***).permitAll()】失效问题

SpringSecurity过滤指定url【.antMatchers(***).permitAll()】失效问题 问题描述 在使用SpringSecurity作为后端验证框架时&#xff0c;遇到配置一些接口不需要token验证&#xff0c;直接放行&#xff0c;但是配置之后没有生效&#xff0c;一直究其原因。 项目配置 因为要进…

轻松掌握mybatis扩展点

MyBatis提供4个扩展点&#xff1a; 1、Executor执行器接口扩展点 用于执行一系列的SQL操作&#xff0c;底层是使用StatementHandler接口进行原子的SQL操作&#xff0c;Executor在StatementHandler之上进行了一层包装&#xff0c;比如ReuseExecutor执行器&#xff0c;在上层包…

大数据离线阶段

目录 数分分布式Apache ZooKeeperApache HadoopShell 命令选项数据仓库Hive 数分 数据分析的目的是把隐藏在数据背后的信息集中和提炼出来&#xff0c;总结出所研究 对象的内在规律&#xff0c;帮助管理者进行有效的判断和决策。 目的&#xff1a;提炼信息&#xff0c;找出规律…

清华大学出版社618大促《IT系列丛书》

&#x1f482; 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 1.《网络安全应急管理与技术…

win11 x86 系统部署arm架构的虚拟机(银河麒麟为例)

文章目录 一、使用 win11 x86 系统部署arm架构的虚拟机&#xff08;银河麒麟为例&#xff09;1.1.1、前言1.1.2、准备环境1.1.1.1、首先&#xff0c;需要一个银河麒麟的arm镜像1.1.1.2、QEMU 软件的下载地址1.1.1.3、UEFI&#xff08;BIOS的替代方案&#xff09;的下载地址1.1.…