UE5使用CommonUI实现手柄进行UI导航

插件配置

开启插件

将渲染聚焦规则修改为从不 ,这一块我们自己实现,保证键盘鼠标和手柄一致的效果。

在引擎-一般设置里,找到游戏视口客户端类,修改为CommonGameViewportClient 通用视口来支持手柄效果,修改这个以后,你的输入操作会先通过UI然后再经由PlayerController处理。

创建通用数据

首先,我们创建场景的输入操作数据表,这个数据表可以设置某个UI可以通过某个按键直接触发,而不是需要导航到默认位置以后再触发。

在数据表里,我们可以填写一些需要直接触发的操作,比如返回,确认,页面切换

创建通用UI输入数据

在类默认值的细节这里,我们需要设置默认点击操作和默认返回操作,实现这些,就可以实现触发按钮的事件和返回上一层事件了。

你还需要设置显示操作的提示图标,效果如下,会在开启手柄后,显示按键对应的激活按钮事件。

实现这个效果,我们需要创建CommonInputBaseControllerData

首先将输入类型修改为手柄,将手柄命名为通用。

在笔刷这里设置好每个手柄按键操作对应显示的图标

最后,在项目设置这里,修改输入数据,以及手柄名称和控制器数据,控制器数据可以设置多种。

基础使用

CommonUI的控件不和默认的UserWidget一样直接添加到视口,它是通过通用可激活控件堆栈(CommonActivatableWidgetStack)来实现UI的显示。

首先创建一个CommonUserWidget用来当作容器

在里面添加了三个通过通用可激活控件堆栈(CommonActivatableWidgetStack),分别用来放HUD,菜单,弹框类型的控件,这样可以实现互相不影响。

堆栈下面可以放入的控件都需要继承CommonActivatableWidget

每次在关卡打开时,我们将Container添加到视口即可

添加和删除

添加就比如简单,我们只需要对应的Widget,添加到对应的堆栈里即可。

如果当前的控件需要关闭,那么,我们只需要调用自身的Deactivate Widget节点即可。

切换关卡时,调用移除所有控件

控件设置

在CommonActivatableWidget里,我们需要做的有几点

重载函数 获取所需聚焦目标,在当前控件激活时,如果找不到聚焦的控件,那么,系统会调用此设置的目标。

然后在里面指定目标即可

然后我们设置自动激活,并支持激活聚焦,如果你的页面是HUD,那么支持激活聚焦这一选项一定不要勾选。

对于弹框的控件,我们放入对应的堆栈,在回调里调用停用控件即可。

这里有个注意点,需要先调用回调,然后再停用自身,这样在处理聚焦的时候,逻辑更加通顺,毕竟有时候关闭弹框时,当前页面也需要关闭。

我现在有个问题,就是Push新的Widget后,无法实现自动聚焦,所以,我采用了手动延迟聚焦,如果大家有好的思路记得告诉我

游戏设置修改聚焦

在游戏设置项里面,每一项都是CommonButtonBase,为了支持聚焦,但是,当你用手柄选中一项时,需要的确不是当前项,比如里面有额外的通用旋转体,通用按钮,我们需要控制的是这些。

在一行获取聚焦时,我们可以指定聚焦的目标

切换手柄后按钮提示

在我们切换成手柄操作后,看到有些游戏里,会出现对应的按键的操作提示

首先创建通用按钮基类的控件

在控件里添加InputActionWidget节点,添加了这个节点以后,能够根据你的设置自动修改操作

在按钮添加到其它控件后,我们需要修改触发输入操作,它会根据我们之前的配置自动切换,会根据数据表格的数据获取输入触发的按钮,然后根据CommonInputBaseControllerData设置的键位图标显示。

我们还可以在数据里找到设置的命名,来修改按钮文本。

相关推荐
iOS15011015332 小时前
UIScrollView中的按钮UIButton高亮状态延迟触发、响应慢问题分析
ui·ios·objective-c
常利兵3 小时前
深入理解Android ViewModel&SavedStateHandle:告别数据丢失,打造稳健UI架构
android·ui·架构
l1t4 小时前
利用DuckDB 1.5的json和struct功能分析llama web-ui导出的对话json文件
前端·ui·json
少云清4 小时前
【UI自动化测试】3_IOS自动化测试 _使用真机
ui·ios
招风的黑耳4 小时前
【实战原型】TMS物流运输管理系统高保真交互原型
ui·交互·axure·原型
zhangzhangkeji5 小时前
(18)UE5 接口里的两个宏 GENERATED_UINTERFACE_BODY() 与 GENERATED_IINTERFACE_BODY()
ue5
R-sz5 小时前
虚幻 UE5 像素流多用户部署,像素流多实例部署
ue5·游戏引擎·虚幻
朗迹 - 张伟5 小时前
UE5粒子特效Niagara学习笔记
笔记·学习·ue5
少云清6 小时前
【UI自动化测试】6_TPshop项目实战 _allure测试报告
ui