跳至主要內容

Error11. ListView手柄聚焦失效无法操作

Mr.Si大约 1 分钟u++

头像
加了一个ListView或者TileView,用手柄发现无法操作!
头像
这是一个非常坑的东西!需要保证下面几个操作。

1.前提

头像
需要使用CommonUI

2.去掉虚线选择轮廓

头像

编辑 - 项目首选项 - 用户界面 渲染焦点规则设置为从不

3.聚焦组件

头像
和聚焦组件是否开启半毛钱关系没有,真的坑

4.重写函数GetDesiredFocus

头像
这样写是没用的
头像
最好是判断现在是不是手柄输入,然后导航到索引为0的位置。
头像
导航和设置有区别吗?
头像
有大区别!,导航到位置只是导航不会触发,设置则会触发点击事件。

5.吊用没有的函数 NativeOnFocusReceived

头像
我看Lyra还写了一个接口函数,实测吊用没有,我真的想吐槽这方面官方文档真的不够仔细,能不能让开发者更专注游戏细节而不是这种基本细节!
FReply UHeroSkinsWidget::NativeOnFocusReceived(const FGeometry& InGeometry, const FFocusEvent& InFocusEvent)
{
	const UCommonInputSubsystem* InputSubsystem = GetInputSubsystem();
	if (InputSubsystem && InputSubsystem->GetCurrentInputType() == ECommonInputType::Gamepad)
	{
		if (SkinListView)
		{
			SkinListView->NavigateToIndex(0);
			SkinListView->SetSelectedIndex(0);
			return FReply::Handled();
		}
	}
	return FReply::Unhandled();
}