概述:利用FrameCapture,实现通过UMG按钮来捕捉单帧画面和一段视频并保存到本地;

其中:

单帧画面为游戏运行时的实时暂停画面;


(资料图片仅供参考)

视频是通过设置好的sequence镜头(注意只是镜头)来得到一段想要的动画,当然也可以录制游戏实时运行画面等等玩法(视具体需求而定)

第一步:交互控件设计

创建UMG控件,设置两个按钮 “拍照”、“录制”,分别对应单帧捕获和录制视频功能;

第二步:Sequence设置

1、创建关卡序列,设置好自己想要的镜头以及元素内容;

2、将关卡序列转化为关卡蓝图,以备UMG调用

第三步:UMG蓝图编辑

一、截图(捕获单帧)

1、生成Actor

首先我们需要一个FrameCaptureActor,所以需要生成Actor;

注意需要把SpawnTransform创建变换,不然会报错;图中把RenturnValue提升为变量是为了之后使用方便(可忽略);

2、GetSaveFileDialogue是获取保存路径;

其中:

DefaultFileName是默认文件名称,图中设置为“Image_” 以此方便给截图命名;

FileTypes则是存储文件的类型,图中为“Image Files (*.png)|*.png|” 因为只需要png所以只保留了这一种,可以根据自己需求来设置;

AllowOverwrite则是判断是否允许覆盖(一般来说会勾上)

3、在此之后接一个判断当然是为了判断是否做了保存这一步操作;InitializeScreenCapture则是对捕获图片的设置;注意把存储路径给到FileName

其中:ResolutionX和Y是图片的分辨率

UseViewportRes使用视口分辨率

Save to Disc是否存到本地(一般来说会勾上)

二、录制(录制视频)

1、录制配置

一开始和截图一样获取存储路径;之后初始化录制(InitializeRecorder),在这个节点可以配置一些影片设置,如:分辨率、帧率等;加一个RecordingingStarted的布尔是为了判断录制状态(是否在录制)

2、“预览视频”

打包成了一个事件,其实就是打开一开始预置好的Sequence蓝图,里面有想要的镜头(如果只是希望记录游戏画面,这一步可以忽略);

3、结束录制

在Sequence播放结束时(这里可以自定义触发结束的事件),紧接着判断生成的FrameCaptureActor是否有效+RecordingingStarted布尔是否为真,这样作为双保险;

注意使用StopRecorder而不是TogglePauseRecorder,否则仅处于暂停状态而没有结束录制进程,以至于关掉UE才能看视频或者引发其它的问题;

结尾:文章作为笔记、分享使用,有不对或者更好的思路,欢迎讨论指出

推荐内容