Vue3中集成Unreal 5.2 像素流(Pixel Streaming插件)

news/2024/7/9 23:50:27 标签: unreal engine 5, vue, 虚幻引擎5, github

目录

        • 1. 创建一个Unreal项目
        • 2. 启用Pixel Streaming插件
        • 3. 下载Unreal 5.2对应的Pixel Streaming Infrastructure
        • 4. 创建一个Vue项目
        • 5. 推流方式一:使用Unreal Engine 5.2
        • 6. 推流方式二:打包项目
        • 参考资源:

1. 创建一个Unreal项目

默认大家都已经成功安装好了Unreal Engine 5.2版本。如果没有的话,可以先去官网下载一个EPIC,然后从EPIC里下载一个Unreal Engine 5.2,推荐大家安装的时候选一个空间大一些的盘,最好放在固态里,这样启动可以快很多。
首先,在EPIC里启动安装好的Unreal Engine 5.2.
在这里插入图片描述
点击游戏,选择空白项目,取消勾选初学者内容包,这样可以少占一些空间,选择合适的项目位置,最好不要选择C盘,因为Unreal项目所占的空间都比较大,然后单击创建。
在这里插入图片描述
现在就创建好了一个空白项目,如下图所示。
在这里插入图片描述

2. 启用Pixel Streaming插件

单击菜单栏-编辑-插件,搜索Pixel Streaming,勾选后点击立即重启。
在这里插入图片描述
当重启完成后,出现像素流送按钮,说明插件启用成功。
在这里插入图片描述

3. 下载Unreal 5.2对应的Pixel Streaming Infrastructure

推荐大家直接从github上下载PixelStreamingInfrastructure最新版的,也可以打包项目,打包完成后里也是有的。
找一个空白目录,打开cmd,输入以下命令,确保已经安装过git。

git clone https://github.com/EpicGames/PixelStreamingInfrastructure.git

clone完成后,目录是这个样子,未来也许会改变。
在这里插入图片描述
简单介绍一下,每个文件夹的内容。

  1. 配对器(MatchMaker):该文件夹包含配置和运行配对器所需的所有脚本。
    在这里插入图片描述
  2. SFU:该文件包含配置和运行选择性转发单元(SFU)所需的所有内容。
    在这里插入图片描述
  3. SignallingWebServer :这是必需像素流送元素的位置,例如信令服务器、Web服务器和前端。
    在这里插入图片描述
    Platform_scripts 目录是用于启动每个像素流送元素的所有脚本的常用位置。你可以在 cmdbash 中分别找到Windows和Linux的脚本。

4. 创建一个Vue项目

创建vue项目的方式很多,通过手脚架或者命令行都可以。
创建一个新的Vue项目,然后通过vscode或者webstorm打开,目录大致如下所示:
在这里插入图片描述
安装UE5.2的PixelStreaming对应的前端依赖,一个是API库依赖,一个是UI库依赖。

npm install @epicgames-ps/lib-pixelstreamingfrontend-ue5.2
npm install @epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.2

在views目录下,新建一个vue文件,命名为Player.vue
代码如下:

vue"><template>
    <div>
      <!-- 页面内容 -->
    </div>
</template>
  
  <script>
import { Config, PixelStreaming } from '@epicgames-ps/lib-pixelstreamingfrontend-ue5.2';
import { Application, PixelStreamingApplicationStyle } from '@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.2';

export default {
    name: 'PlayerView',
    mounted() {
      const PixelStreamingApplicationStyles = new PixelStreamingApplicationStyle();
      PixelStreamingApplicationStyles.applyStyleSheet();
  
      // Example of how to set the logger level
      // Logger.SetLoggerVerbosity(10);
  
      // Create a config object
      const config = new Config({ useUrlParams: true });
  
      // Create a Native DOM delegate instance that implements the Delegate interface class
      const stream = new PixelStreaming(config);
      const application = new Application({
        stream,
        onColorModeChanged: (isLightMode) => PixelStreamingApplicationStyles.setColorMode(isLightMode)
      });
  
      document.body.appendChild(application.rootElement);
    },
    methods: {
      // ...
    }
}
</script>
  
<style>
body {
    width: 100vw;
    height: 100vh;
    min-height: -webkit-fill-available;
    font-family: 'Montserrat';
    margin: 0;
}
</style>
  

修改router目录下的index.js:
将其引入:
在这里插入图片描述

vue">import PlayerView from '@/views/Player.vue'

然后将其暴露出去:
在这里插入图片描述

vue">{
    path: '/',
    name: 'player',
    component: PlayerView
  },

启动项目,在命令行中输入:

npm run serve

启动完成后,在浏览器中输入网址http://localhost:8080/

此时,可以看到默认的播放器画面。
在这里插入图片描述

5. 推流方式一:使用Unreal Engine 5.2

回到我们刚才的Unreal项目,点击像素推流,点击启动信令服务器,然后点击流送关卡编辑器。
在这里插入图片描述
现在,回到浏览器中,点击默认播放器左边的设置按钮,将Signaling url修改为ws://localhost:80;
在这里插入图片描述
现在就可以正常看到画面了,并且支持鼠标、键盘的基础操作,此时的画面和Unreal Engine中是同步的。
在这里插入图片描述

6. 推流方式二:打包项目

如果项目未来要发布的话,一定是采用这种方式的。
点击菜单栏-编辑-编辑器偏好设置
在这里插入图片描述
选择,关卡播放器-播放
在这里插入图片描述
找到额外启动参数选项,输入参数为:-AudioMixer -PixelStreamingIP=localhost -PixelStreamingPort=8888
在这里插入图片描述
完成这步后,打包项目:
在这里插入图片描述
打包完成后,找到文件夹打开,目录大致如下:
按住Alt键拖动一个快捷方式出来,然后右键-属性,添加启动参数:
-AudioMixer -PixelStreamingIP=localhost -PixelStreamingPort=8888
在这里插入图片描述
在这里插入图片描述
完成这些工作后,启动我们在第三步下载的信令服务器。
使用管理员权限打开powershell,进入目录PixelStreamingInfrastructure\SignallingWebServer\platform_scripts\cmd
启动Start_SignallingServer.ps1
启动完成后,界面如下:
在这里插入图片描述
现在,双击打开快捷方式,然后在浏览器中打开我们的vue项目,也可以看到界面了。

参考资源:

Unreal官方文档


http://www.niftyadmin.cn/n/409576.html

相关文章

每日三问-前端(第十八期)

先来回顾一下上期的问题及答案&#xff1a; 2023年6月7日 1. 组件间通信是指在 Vue.js 中&#xff0c;不同组件之间进行数据或事件的传递和交互的过程。常用的组件通信方式包括&#xff1a; 父子组件通信&#xff1a;通过 props 属性将数据从父组件传递给子组件&#xff0c;子组…

chatgpt赋能python:小黑框:Python程序员必备利器

小黑框&#xff1a;Python程序员必备利器 如果您是一名Python程序员&#xff0c;小黑框&#xff08;Terminal&#xff09;一定不陌生。小黑框是一种基于文本的用户界面&#xff0c;通常用于执行命令行任务&#xff0c;编写或调试代码等。Python程序员可以通过小黑框完成许多任…

环保液压设备系统比例阀放大器

环保液压设备系统是一种采用节能、环保设计理念和技术制造的液压设备。它主要由高效能的液压元件、低能耗的液压泵和控制系统组成&#xff0c;旨在减少能源消耗和环境污染。 环保液压设备系统已经广泛应用于各种工业领域&#xff0c;包括建筑、制造业、能源、矿业等。特别是在…

练习:缺陷Defects/感染Infections/失败Failure

练习&#xff1a;缺陷Defects/感染Infections/失败Failure public static int findLast(int[] x, int y) {for (int i x.length - 1; i > 0; i--) {if (x[i] y) {return i;}}return -1;}/** If x null throw a NullPointerException, else return* the number of posit…

inux查看某个进程内存占用情况以及/proc/pid/status解释

以nginx 为例 1.top top -b -n 1 |grep nginx|awk ‘{print “VIRT:”$5,“RES:”$6,“cpu:”$9"%“,“mem:”$10”%"}’ 或者简单的top -p 进程id. ps aux | grep nginx VSZ – 虚拟地址空间大小 --> 与top 的 VIRT 对应 RSS – 实际物理内存大小 --> 与top…

一个奇葩的问题

大家好&#xff0c;这里是极客重生&#xff0c;最近遇到一个奇葩的网络问题&#xff0c;分享给大家&#xff0c;看完一定会觉得很奇葩。 问题现象 客户反馈有一个server端S&#xff0c; 两个client端C1, C2, S的iptables规则对C1, C2都是放通的&#xff0c;但是C2无法连接上S&a…

代码开发优化细节

前言 ?> 代码优化的目标是 减小代码的体积提高代码运行的效率 代码优化细节 尽量指定类、方法的final修饰符 带有final修饰符的类是不可派生的。在Java核心API中&#xff0c;有许多应用final的例子&#xff0c;例如java.lang.String&#xff0c;整个类都是final的。为类指定…

文本三剑客之 awk

awk Linux/UNIX 系统中&#xff0c;awk 是一个功能强大的编辑工具。逐行读取输入文本 以空格作为分割符&#xff0c;多个空格他会自动压缩成一个空格 AWK信息的读入也是逐行指定的匹配模式进行查找&#xff0c;对符合条件的内容进行格式化输出或者过滤处理. 1按照命令找指定…