UE4_用户控件_1_滑块控制图像颜色的变化
祝愿大美兰陵越来越好,祝愿祖国繁荣昌盛,祝愿人民幸福安康!
一、样式展示:
效果,当角色靠近物体(只有一个胶囊碰撞体)时显示用户控件,调整控件中的滑块值,可以改变UE4logo的颜色,同时滑块的数值可以在滑块后面显示。
二、制作步骤:
1、新建一个触发Actor,更名为BP_EventTrigger。
添加Capsule Collision。
修改胶囊体半高和半径都为156
BP_EventTrigger事件图表中添加“事件Actor开始重叠”事件。
添加一个布尔变量display,编译,设置默认值为true。
2、新建个角色类,用于行走,不含骨骼网格体。
3、新建个GameMode,并把默认pawn类设置为新建角色BP_My_Character。
4、世界场景设置,选择上面的gamemode。
5、让角色具有行动能力
因为我们创建的角色不具备控制行走的事件,同时添加一个变量HUDActive控制是否具有行动能力。
这儿的事件还是使用的第三人称角色中的输入:
删除场景中默认的角色,测试下:
现在能够正常控制角色了。
6、新建个拥有退出按钮的用户控件UMG_Exit,事件开始运行创建
设置按钮的锚点和位置,如下图:
在按钮上添加个文字Exit,修改颜色为黑色,效果如下图:
角色中事件开始运行的时候把它加上去,并在角色中添加用户控件变量,把值赋予它:
7、角色中还需要加一个BP_EventTrigger类型的变量。
特别是当好几个BP_EventTrigger类型的实例触发它的话,这个变量是用于决定哪个实例触发的它。
8、角色中还得添加一个用户控件类的引用的变量
好知道我要创建的用户控件到底是哪一个?
这个值也是从BP_EventTrigger蓝图类中得到的。
9、编辑下BP_EventTrigger蓝图类,当重叠的时候,我们把自己传递给角色的变量。
新建一个布尔变量Isactive,用于判断是否被激活,
默认是没激活的,当没被激活的时候,我们需要把要显示的控件类传递给角色的变量affectUMG
10、同时还得设置一个变量值赋予角色的affectUMG变量,新建个公开的变量赋值与它
11、现在用户控件还没有,我们没办法给公开的变量affectUM赋值,来新建个用户控件,更名为UMG_Sliders
拖拽个图像作为背景。
在拖拽个画布面板,放一些滚动条
画布的锚点位置下方居中
位置大小调整:
放个滑块上去,修改锚点如图:
大小位置如上图,参数如下图:
再赋值2个,如图:
给滑块加文本:
再加个图像,放logo
这个图像如何去掉黑白?新建个材质作为图像。
我们直接把材质赋予图像就可以了。这个材质是用作用户界面的。至此我们要显示的控件制作完成。
12、把刚做的控件赋值给公开的变量affectUM。
先把这个actor拖拽到场景中
13、角色中把它显示出来,角色中添加自定义事件showUMG,用于显示控件。
添加自定义事件,创建用户控件实例
这就是为什么我们需要的变量类型为用户控件的类引用,把变量AffectUMG赋予它:
我们设置下输入模式为设置仅输入模式UI,set input Mode UI Only:
添加到视口add to Viewport:
14、先测试下效果:
没有触发成功,原因是什么呢?是因为我们还没有在BP_EventTrigger的重叠事件中“事件Actor开始重叠”中让角色显示控件。
运行效果如图:
15、继续完善showUMG事件,让UMG_Exit添加到视口
效果:
因为用户控件已添加,所以我们要把变量HUDActive设置为true
16、为角色添加HideUMG自定义事件
当退出按钮被我们单击时调用。
添加点击时事件,我们需要运行角色的HideUMG事件,当然我们得需要角色先有HideUMG自定义事件,首先把显示控件添加的用户控件都给删除。
设置HUDActive变量为false,
再把UMG_Exit移除
17、为UMG_Exit控件中的Exit退出按钮添加单击时事件
测试下:
发现没有鼠标,也就是只要用户控件被创建并添加到视口就得显示鼠标
当退出时就不显示鼠标,鼠标是由玩家控制器控制的
发现当退出的时候,无法控制角色。
18、添加单击退出按钮退出菜单时让角色恢复控制权
运行测试无问题。
这里的控制权和鼠标显示与否的问题,可以把自定义事件写在玩家控制器里面,当用户控件被创建时,调用玩家控制器中的事件,让鼠标显示,设置输入模式仅UI,当单击退出按钮时,调用玩家控制器中的另一个事件让鼠标隐藏和设置仅输入模式游戏。
19、如何让滑块的数据和图像颜色相关联
双击UMG_Sliders用户控件,在每一个滑块的后面添加一个文本框
把文本内容删掉,添加绑定
拖动对应滑块,获取其值,
另外两个类似操作就可以了。
因为滑块和图像是处于同一个用户控件中的,我可以直接把颜色绑定成函数:
我们需要线性颜色
线性颜色的分量来自于三个滑块的值:
由于滑块位置放错了,修改下连接线
来看下运行效果: