问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

UE4用户控件教程:通过控件蓝图内部变量修改进度条值

创作时间:
作者:
@小白创作中心

UE4用户控件教程:通过控件蓝图内部变量修改进度条值

引用
CSDN
1.
https://m.blog.csdn.net/Growthofnotes/article/details/145015705

本文将详细介绍如何在Unreal Engine 4(UE4)中使用用户控件蓝图来创建和修改进度条。通过图文结合的方式,文章将带领读者完成进度条控件的创建、参数设置、按钮事件添加、角色蓝图创建、游戏模式设置以及触发器的使用,帮助开发者掌握UE4中用户控件的高级应用。

一、效果预览

进度条读取一个0.0-1.0的标量变量并将该变量以百分比形式显示。

这个进度条从UMG蓝图中的一个内部变量读取并报告其当前值。

二、创建UMG进度条控件

1. 新建控件蓝图,并更名为UMG_ProgessBars。

2. 添加画布面板,并修改锚点及参数,样式如下:

3. 拖拽添加进度条,修改参数及样式如下:

层级面板如下图:

4. 添加背景图像

样式如下:

5. 添加文本框,用作功能说明。

6. 添加水平框用于放按钮。修改参数,样式如下:

7. 在水平框中放两个按钮并隔开,样式如下:

8. 对每个按钮添加文字。样式如下:

三、完成UMG进度条控件的事件图表

1. 对进度条显示的值创建绑定函数

2. 创建一个浮点型变量percent,来作为进度条的绑定数据。

3. 为按钮添加点击事件

4. 当值减少时需要判定值还够减少的吧,当值增加时需要判定还能增加不?幅度可以每次为0.1

5. 当蓝图创建生成的时候,我们需要显示鼠标。

四、创建角色蓝图

1. 新建个父类为pawn的蓝图类。更名为BP_Image_Character。

2. 这个角色只是用于观察场景,并与场景中的物体相碰撞用的,所以不需要骨骼网格体,

3. 但是我们需要响应键盘和鼠标事件,可以把第三人称角色复制过来,这样角色就能移动了。

4. 我们需要角色与胶囊体不同实例碰撞时创建不同的用户控件,所以这里得需要一个用户控件类得引用型变量。

5. 我们自定义一个显示控件的事件

发现控件类图类的引用和用户控类引用不兼容,修改变量类型。

我们需要添加到视口,同时设置输入模式。

6. 同样我们需要一个把它清除的自定义事件

7. 因为所有控件的退出按钮是一样的,所以这里创建一个公共的退出按钮。

创建按钮的点击事件,当点击时调用角色的自定义事件clearwidget。

五、新建个GameMode

在 UE4 中,每一个世界(World)有多个 Level(关卡),而每个关卡又可以设定自己的 GameMode(游戏模式),从而控制游戏的玩法。

1. 新建个GameMode。更名为BP_Gamemode。

2. 设置游戏模式默认角色为BP_Image_Character。

3. 关卡设置

项目设置不动

测试下:

无问题。

六、创建触发器蓝图

1. 新建一个actor蓝图类,

2. 添加一个胶囊体碰撞

大小设置为:

3. 添加事件Actor开始重叠事件

4. 先检测一下是不是我们的角色碰撞的

5. 如果是他的话,我们需要把创建的用户控件类的引用传递给角色的UMGClassName。好让角色知道应该创建的是谁。

这里同样需要一个这个类型的变量UMGClassName1

6. 我们需要把用户控件类的引用给角色传递过去

7. 因为这里的UMGClassName1,需要把这个触发器拖到场景中,根据它所在的位置来决定触发生成哪一个控件,所以不同的实例创建的控件是不同的,这样我们就需要根据位置来设置UMGClassName1的值,这样这个变量就需要公开。

变量为公有,就可在此蓝图的每个实例上进行编辑。

8. 这样我们就可以调用显示控件的自定义事件了。

可以了,但是没有退出控件,没有鼠标,所以改进一下。

9. 角色中showwidget时,把退出控件加上

10. 当用户界面生成时,没有鼠标,角色还是到处跑,这样可以用变量进行控制。

清除控件的时候要隐藏鼠标

11. 再添加个变量来控制当控件添加的时候,让角色不动。

12. 给拖动到舞台的触发器实例的变量赋值。

测试下:

减少进度条没问题,增加进度条按钮到这个位置加不上去了。修改:

测试下:

问题解决。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号