概述:利用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才能看视频或者引发其它的问题;
结尾:文章作为笔记、分享使用,有不对或者更好的思路,欢迎讨论指出
标签: