跳至主要內容

Error14. 默认导航导致的UI关闭不了

Mr.Si大约 2 分钟u++

省流

UE默认导航Tab键会聚焦拦截UI,导致Input事件传递不下去

问题描述

头像
BABA!!!我的背包绑定了TAB键后关闭不掉了!
头像
别急别急给我说说怎么个事。
头像
就是按Tab打开背包,然后点了其中一个格子后,按Tab关闭不掉了!
GIF
头像
其他按键正常吗?
头像
其他按键都是正常的呀!
头像
这应该是UE默认导航的锅了

问题排除

  1. 论坛解决方案:在PlayerController中加入
#include "Framework/Application/NavigationConfig.h"

void AMyPlayerController::ToggleThumbstickUiNavigation(bool ThumbstickNavigationEnabled) {
	if (FSlateApplication::IsInitialized()) {
		TSharedRef<FNavigationConfig> currentNavConfig = FSlateApplication::Get().GetNavigationConfig();
		currentNavConfig->bAnalogNavigation = ThumbstickNavigationEnabled;
		FSlateApplication::Get().SetNavigationConfig(currentNavConfig);
	}
}
  1. 封装成蓝图函数库

#include "Framework/Application/NavigationConfig.h"

	/**
     * Toggles various types of UI navigation.
     * Enables or disables specific navigation behaviors in the UI, including tab-based navigation,
     * key-based navigation, and analog thumbstick navigation.
     *
     * 切换各种类型的 UI 导航。
     * 启用或禁用特定的 UI 导航行为,包括基于 Tab 键的导航、键盘导航和模拟摇杆导航。
     * 
     * @param bTabNavigation        Enables or disables Tab key navigation.
     *                              启用或禁用 Tab 键导航。
     * @param bKeyNavigation        Enables or disables navigation using keyboard keys.
     *                              启用或禁用键盘导航。
     * @param bAnalogNavigation     Enables or disables analog (thumbstick) navigation.
     *                              启用或禁用模拟摇杆导航。
     */
	UFUNCTION(BlueprintCallable, Category = "UI|Navigation")
	static void ToggleThumbstickUiNavigation(bool bTabNavigation = true, bool bKeyNavigation = true, bool bAnalogNavigation = true);
	
	void UInventoryLib::ToggleThumbstickUiNavigation(bool bTabNavigation /*= true*/, bool bKeyNavigation /*= true*/, bool bAnalogNavigation /*= true*/)
    {
        if (FSlateApplication::IsInitialized())
        {
            // Get the current navigation configuration.
            // 获取当前的导航配置。
            const TSharedRef<FNavigationConfig> CurrentNavConfig = FSlateApplication::Get().GetNavigationConfig();
    
            // Set navigation switches.
            // 设置导航开关。
            CurrentNavConfig->bTabNavigation = bTabNavigation;
            CurrentNavConfig->bKeyNavigation = bKeyNavigation;
            CurrentNavConfig->bAnalogNavigation = bAnalogNavigation;
    
            // Apply the new configuration.
            // 应用新的配置。
            FSlateApplication::Get().SetNavigationConfig(CurrentNavConfig);
        }
    }

头像
接着在用到地方开启/关闭即可

参考链接

Disable Default UI Thumbstick Navigation?open in new window

虚幻4 UI Widget 禁用自带的Tab/方向键导航open in new window