[UE4][C++]基于UUserWidget的一种序列图播放方法

       最近在做一个大项目,鸽了几个月了.......

一、传统方法Flipbook

        这种方法适合序列图较少的情况下、可以一个一个添加进来然后调整顺序。蓝图也比较友好可以直接设置很多属性和功能。这里简单了解一下即可,想要深入了解的同学可以自行搜索。

1.1创建Flipbook

        Flipbook是UE4提供的一种播放序列图的方案,在资源框空白处右键,找到Paper2D,再选择Paper图像序列就能创建一个新的Flipbook

1.2添加关键帧 

        有三种添加关键帧的做法,1直接上方点击按钮;2在下方区域内右键;3直接拖动一个Sprite到下方区域内

 1.3创建Sprite

         对着任一Texture右键,找到Sprite操作,然后再创建Sprite即可,当然你也可以全选所有的序列图然后直接一口气创建。

二、基于UUserWidget 

         具体的原理就是使用  StaticLoadObject 函数根据图片的 引用路径 将图片一张一张加载显示,好处是只要知道序列图的命名格式和规范就可以直接找到,但是因为是动态加载的有时候会挤爆Texture Streaming,具体要看怎么动态释放了。

        在打包的时候,要添加资源的额外路径(最后烘焙也加上),要不然打包可能没有将图片打包进去。

下面给一个具体的例子

2.1新建c++类,继承UUserWidget 

SequenceUserWidget.h

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "SequenceUserWidget.generated.h"USTRUCT(BlueprintType)
struct FSequence
{GENERATED_USTRUCT_BODY()UPROPERTY(EditAnywhere, BlueprintReadWrite)int ID;UPROPERTY(EditAnywhere, BlueprintReadWrite)FString Path;UPROPERTY(EditAnywhere, BlueprintReadWrite)FString Prefix;UPROPERTY(EditAnywhere, BlueprintReadWrite)int Sign;UPROPERTY(EditAnywhere, BlueprintReadWrite)int Start;UPROPERTY(EditAnywhere, BlueprintReadWrite)int Count;FSequence(){}FSequence(int id, FString path, FString prefix, int sign, int start, int count){ID = id;Path = path;Prefix = prefix;Sign = sign;Start = start;Count = count;}
};
/*** */
UCLASS()
class UNIVERSEINBODY426_API USequenceUserWidget : public UUserWidget
{GENERATED_BODY()
public:UFUNCTION(BlueprintCallable, Category = "Sequence")UTexture2D* FindTexture2D(FString Path);UFUNCTION(BlueprintCallable, Category = "Sequence")FString FormatPath(FString Path, FString Prefix, int Sign, int Index);};

 SequenceUserWidget.cpp

// Fill out your copyright notice in the Description page of Project Settings.#include "SequenceUserWidget.h"UTexture2D* USequenceUserWidget::FindTexture2D(FString Path)
{return Cast<UTexture2D>(StaticLoadObject(UTexture2D::StaticClass(), NULL, *Path));
}FString USequenceUserWidget::FormatPath(FString Path, FString Prefix, int Sign, int Index)
{//Texture2D'/Game/Resources/Texture/吸收能量/1_吸收能量序列_00000.1_吸收能量序列_00000'FString dstPath = "";FString idxStr = FString::FromInt(Index);int idxLen = idxStr.Len();if (idxLen > Sign)return dstPath;for (int i = 0; i < Sign - idxLen; i++){idxStr = "0" + idxStr;}/////dstPath = "Texture2D'";dstPath = Path;FString dstName = Prefix + idxStr + "." + Prefix + idxStr;// +"'";dstPath += dstName;return dstPath;
}

2.2 新建蓝图UserWidget 继承自SequenceUserWidget

        1.然后添加常规的画布画板 

        2.添加Image组件

        3.设置SetTimerByFuncitonName(或者你用Tick),来一张一张显示图片

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

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

相关文章

代码随想录算法训练营第17天|● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和

110. 平衡二叉树 简单 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1&#xff1a; [图片] 输入&#xff1a;root [3,9,20,null…

c++11新特性篇-可调用对象包装器, 绑定器

可调用对象包装器, 绑定器 可调用对象 可调用对象是指在 C 中能够像函数一样被调用的实体。它包括了多种类型的对象&#xff0c;使得它们能够像函数一样被调用&#xff0c;可以是函数、函数指针、函数对象、Lambda 表达式等。在C中&#xff0c;具有以下特征之一的实体都被认为…

Unity 讯飞 之 讯飞星火大模型的简单封装和使用(补充讯飞大模型识图功能)

Unity 讯飞 之 讯飞星火大模型的简单封装和使用&#xff08;补充讯飞大模型识图功能&#xff09; 目录 Unity 讯飞 之 讯飞星火大模型的简单封装和使用&#xff08;补充讯飞大模型识图功能&#xff09; 一、简单介绍 二、实现原理 三、注意事项 四、效果预览 五、案例简单…

【外贸干货】领英客户开发与营销的六个策略方向

领英(LinkedIn)已经成为外贸营销人员&#xff0c;尤其是B2B外贸营销人员&#xff0c;一个重要且有效的社交媒体平台。 相比于其他社交媒体平台&#xff0c;领英(LinkedIn)在增加流量、产生高质量的潜在客户和建立思想领导力方面有着独有的优势。 因为领英(LinkedIn)不仅仅是获…

Harmony开发 eTs公共样式抽取

Harmony系统开发使用eTs开发过程中对于样式相同且重复使用的样式可以抽取成公共样式循环利用&#xff0c;类似于android的style样式。 import router from ohos.router import cryptoFramework from ohos.security.cryptoFramework; import prompt from system.prompt class L…

【LLM_04】自然语言处理基础_2

一、神经网络1、循环神经网络&#xff08;RNN&#xff09;2、门控循环单元&#xff08;GRU&#xff09;3、长短期记忆网络&#xff08;LSTM&#xff09;4、双向RNN5、卷积神经网络&#xff08;CNN&#xff09; 二、注意力机制1、注意力机制原理介绍2、注意力机制的各种变式3、注…

保护您的IP地址:预防IP地址盗用的关键措施

随着互联网的发展&#xff0c;IP地址作为标识互联网设备的重要元素&#xff0c;成为网络通信的基石。然而&#xff0c;IP地址盗用威胁正不断增加&#xff0c;可能导致敏感信息泄露、未经授权的访问和网络攻击。本文将介绍一些有效的方法&#xff0c;以帮助组织和个人预防IP地址…

Acrel-2000电力监控系统在上海大世界保护修缮工程项目中的应用

摘要&#xff1a;安科瑞生产厂家1876150/-6237黄安南 介绍上海大世界电力监控系统&#xff0c;采用智能电力仪表采集配电现场的各种电参量和开关信号。系统采用现场就地组网的方式&#xff0c;组网后通过现场总线通讯并远传至后台&#xff0c;通过Acrel-2000型电力监控系统实现…

Vue与UserEcharts、DataV的协同

文章目录 引言一、Vue.js简介二、ECharts和UserEcharts1.ECharts简介2.UserEcharts&#xff1a;Vue和ECharts的结合 三、DataV简介四、Vue与DataV的结合1.DataV的Vue插件2.Vue和DataV的数据交互 结论我是将军&#xff0c;我一直都在&#xff0c;。&#xff01; 引言 接着上一篇…

ubuntu22.04 arrch64版在线安装java环境

脚本 #安装java#!/bin/bashif type -p java; thenecho "Java has been installed."else#2.Installed Java , must install wgetwget -c https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-arm64-vfp-hflt.tar.gz;tar -zxvf ./jdk-8u151-linux-arm6…

【数据分享】我国12.5米分辨率的山体阴影数据(免费获取)

地形数据&#xff0c;也叫DEM数据&#xff0c;是我们在各项研究中最常使用的数据之一。之前我们分享过源于NASA地球科学数据网站发布的12.5米分辨率DEM地形数据&#xff0c;这个DEM数据的优点是精度高&#xff01;基于该数据我们处理得到12.5米分辨率的坡度数据&#xff08;以上…

外贸分享|如何从外贸小白成长为大咖?这10件事值得你坚持做

外贸成功不是一朝一夕的事&#xff0c;而是需要有充分的准备和持续的努力。作为一位有着丰富经验的外贸人员&#xff0c;我总结了成功的秘诀&#xff0c;分享了一个优秀的外贸人应该做好的10项工作。 1 找不到客户怎么办&#xff1f; 有很多各种各样的原因值得思考&#xff1a…

开发过程中,对于动态库的疑问和思考

开发过程中&#xff0c;对于动态库的疑问和思考 前言&#xff1a;先简述一下开发时的情况。由于工程代码编译是在 Linux 上&#xff0c;可执行文件是在板子&#xff08;ARM&#xff09;上去运行。但是我们需要用到hiredis这个库&#xff0c;我发现无论是 Linux 上还是嵌入式系…

【数字图像处理】均值滤波与中值滤波

在数字图像处理中,均值滤波和中值滤波是常见的空间域处理方法,可以用于过滤图像中的噪声。本文主要介绍数字图像均值滤波与中值滤波的基本原理,并记录在紫光同创 PGL22G FPGA 平台的布署与实现过程。 目录 1. 均值滤波与中值滤波 2. FPGA 布署与实现 2.1 功能与指标定义

aardio调用dll中遇到的难点

近期在做的一个项目&#xff0c;需要调用到32位的dll 查看了dll开发给的函数说明&#xff0c;返回的字符是一个指针地址 虽然在arrdio里面调用成功&#xff0c;但是还需要还原成字符&#xff0c;查了很多资料&#xff0c;程度有限&#xff0c;但是还是找到了一篇文章有讲到&…

基于减法平均算法优化概率神经网络PNN的分类预测 - 附代码

基于减法平均算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于减法平均算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于减法平均优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

Python----函数的参数----形参(定义函数时编写的),实参(调用函数时传递的)

在函数定义与调用时&#xff0c;我们可以根据自己的需求来实现参数的传递。在Python中&#xff0c;函数的参数一共有两种形式&#xff1a;① 形参 ② 实参 形参&#xff1a;在函数定义时&#xff0c;所 编写 的参数就称之为 形式参数 实参&#xff1a;在函数调用时&#…

审核业务

1.用户点击发帖按钮&#xff0c;进行帖子发布 2.存储到mysql经验贴表中&#xff0c;设置帖子为1待审核状态 3.判断帖子的发布时间&#xff0c;如果发布时间为立即发布&#xff0c;那么直接存储到redis的立即审核队列&#xff08;list&#xff09; 4.如果帖子为未来需要发布的…

走进 McDSP - 步入专业音频25周年

McDSP 在专业音频领域已走过 25 个年头。 McDSP 由 Colin McDowell 于 1998 年创立&#xff0c;可用于 Pro Tools、Logic 和 Cubase 等流行数字音频工作站以及 Avid VENUE 现场音响系统的软件和硬件产品中。 为了回顾一些里程碑式的事件&#xff0c;我们将为您带来一部关于公司…

Spring Boot配置文件 Spring日志文件相关的知识

在上文中&#xff0c;小编带领大家创建了一个Spring Boot项目&#xff0c;并且成功的执行了第一个SPring Boot项目&#xff08;在网页上运行hello world&#xff09; 那么&#xff0c;本文的主要作用便是带领大家走进&#xff1a;Spring Boot配置文件 && Spring日志文件…