User interface Unity UI按钮具有疯狂的转换状态行为-单击后仍会高亮显示

User interface Unity UI按钮具有疯狂的转换状态行为-单击后仍会高亮显示,user-interface,button,unity3d,User Interface,Button,Unity3d,我花了一段时间才解决Unity UI按钮转换的问题: 问题: 我将鼠标悬停在button对象上,它将进入高亮显示状态,这很好。若我按下按钮上的鼠标,它将进入按下状态,然后我将鼠标移到按钮外,使其不再位于按钮上方。按钮将变为高亮显示状态,而不是正常状态。我需要在空白处单击以获得按钮的正常状态 TLDR: 这是Unity中按钮元素的默认行为-它在初始交互后保持焦点,使其显示高亮显示的颜色。单击“离开”将清除焦点,因此它不再高亮显示 要更改此行为,可以切换导航设置 目前,它被设置为自动。根据,您要使

我花了一段时间才解决Unity UI按钮转换的问题:

问题: 我将鼠标悬停在button对象上,它将进入高亮显示状态,这很好。若我按下按钮上的鼠标,它将进入按下状态,然后我将鼠标移到按钮外,使其不再位于按钮上方。按钮将变为高亮显示状态,而不是正常状态。我需要在空白处单击以获得按钮的正常状态

TLDR:


这是Unity中按钮元素的默认行为-它在初始交互后保持焦点,使其显示高亮显示的颜色。单击“离开”将清除焦点,因此它不再高亮显示

要更改此行为,可以切换导航设置

目前,它被设置为自动。根据,您要使用的选项为“无”,这将导致:

没有键盘导航。还可确保它不会因单击/轻敲而获得焦点


希望这有帮助!如果您有任何问题,请告诉我。

如果您想使用键盘导航并解决此问题,您可以添加此功能以更新:

void Update()
{
    if (Input.GetMouseButtonUp(0))
    {
        EventSystem.current.SetSelectedGameObject(null);
    }
}

要保留键盘自动导航,您可能需要从IPointerExitHandler继承并在退出时取消选择:

public void OnPointerExit(PointerEventData data)
{
    EventSystem.current.SetSelectedGameObject(null);
}

如果已经选中,您可以添加检查以取消选择
gameObject

这似乎是设计的行为-对于交互式UI元素(例如,您可以通过HTML按钮和链接看到),单击的元素通常会在初始交互后保留“焦点”。点击这里将清除焦点,这就是为什么当你这样做时按钮不再突出显示的原因。我不认为这是鼠标交互中的直观行为。但只要他们有避免这种情况的选择,我就可以走了。感谢@Serlite您可以以任何方式使用导航,它可以让您完全控制过渡的方式,因此您不需要这样的解决方法。此外,此解决方案会影响游戏性能,并可能会根据游戏中的其他输入行为引入更多错误。如果导航为“无”,则无法使用键盘导航是!但要使用键盘导航,您可以将导航设置为手动,然后单击“可视化”按钮进行编辑。这就是我所说的完全控制。你的意思是我必须将导航更改为显式,并为每个按钮指定更改“向上选择”、“向下选择”、“向右选择”和“向左选择”?@UmairM:接受的答案不允许导航,这是我需要的gamepad支持。