如何检测鼠标左键单击,而不是在UI按钮组件上单击时检测

达克

我的脚本使GameObject继续前进Input.GetMouseButtonUp(0)不幸的是,当我单击时UI Button,移动功能被触发,导致GameObject移动。

当我按下屏幕上的按钮(UI元素)时,我不希望我的GameObject移动。我想防止在单击UI组件之类的UI组件时移动GameObject Button我该如何补救?另外,我想检查鼠标是否在特定的UI元素(2或3个按钮)上单击了

程序员

看完你的评论。您需要的是EventSystem.current.IsPointerOverGameObject(),它检查指针是否在UI上。true当指针位于UI上时,否则为false您可以将其与' !'一起使用,并且仅当鼠标不在UI上方时才运行旋转代码。

对于台式机

if(Input.GetMouseButtonUp(0) && !EventSystem.current.IsPointerOverGameObject())
{
    //Your code here
}

//对于手机

if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended && !EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
{
    //Your code here
}   

上面的解决方案应该可以,但是有一个错误。当在的UI Button外部按下鼠标按钮时UI Button,它将注册为单击。因此,基本上,该解决方案仅在您单击UI Button并释放时才有效UI Button如果您在以外发行U Button,原来的问题将再次出现。

最好的解决方案是使用一个临时boolean值,并使用来检查最初是否在UI上按下了按钮Input.GetMouseButtonDown保存后boolean,您便可以在Button与一起使用时使用Input.GetMouseButtonUp(0)提供以下解决方案以与Mobile和Desktop一起使用。经过移动测试,可以正常工作。

bool validInput = true;

private void Update()
{
    validateInput();

    #if UNITY_STANDALONE || UNITY_EDITOR

    //DESKTOP COMPUTERS
    if (Input.GetMouseButtonUp(0) && validInput)
    {
        //Put your code here
        Debug.Log("Valid Input");
    }
    #else

    //MOBILE DEVICES
    if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended && validInput)
    {
        //Put your code here
        Debug.Log("Valid Input");
    }
    #endif
}

void validateInput()
{
    #if UNITY_STANDALONE || UNITY_EDITOR
    //DESKTOP COMPUTERS
    if (Input.GetMouseButtonDown(0))
    {
        if (EventSystem.current.IsPointerOverGameObject())
            validInput = false;
        else
            validInput = true;
    }
    #else
    //MOBILE DEVICES
    if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
    {
        if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
            validInput = false;
        else
            validInput = true;
    }
    #endif
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检测右键单击+左键单击

来自分类Dev

如何检测鼠标中键单击?

来自分类Dev

如何检测鼠标中键单击?

来自分类Dev

如何检测鼠标中键单击?

来自分类Dev

如何在Pygame中同时检测鼠标左键和右键单击

来自分类常见问题

如何检测pygame中嵌套按钮内的鼠标单击

来自分类Dev

如何检测鼠标在pyside中绘制的椭圆上单击?

来自分类Dev

如何检测控件上的完整鼠标单击(上下)?

来自分类Dev

如何检测在pyside中绘制的椭圆上的鼠标单击?

来自分类Dev

如何统一检测鼠标在GUITexture上的单击

来自分类Dev

如何在单击鼠标左键而不是单击鼠标右键时打开D3.js上下文菜单

来自分类Dev

如何在单击鼠标左键而不是单击鼠标右键时打开D3.js上下文菜单

来自分类Dev

检测游戏对象上的鼠标单击

来自分类Dev

检测游戏对象上的鼠标单击

来自分类Dev

如何检测鼠标单击PySide Gui?

来自分类Dev

如何在行的单击按钮上检测indexPath?

来自分类Dev

如何使jstree仅在单击鼠标左键时选择节点?

来自分类Dev

如何在鼠标左键单击时禁用jqgrid的行选择

来自分类Dev

可以在MFC按钮控件上检测到鼠标右键单击事件吗?

来自分类Dev

如何检测单击了哪个按钮?(Pynput)

来自分类Dev

如何检测单击了哪个按钮-Java

来自分类Dev

如何检测单击了哪个单选按钮?

来自分类Dev

如何检测单击了哪个删除按钮?

来自分类Dev

如何检测在javascript中单击了哪个按钮?

来自分类Dev

如何检测使用javascript单击了哪个按钮?

来自分类Dev

仅当用户在角度 4 的特定组件中单击浏览器的后退按钮时,如何检测或运行功能?

来自分类Dev

使用jQuery检测每个实例的鼠标滚动,而不是每次单击

来自分类Dev

单击后如何检测鼠标按钮是否被按下一定时间

来自分类Dev

检测单击操作栏上的后退按钮-(单击操作栏上的后退按钮时未调用OnOptionsItemSelected)

Related 相关文章

  1. 1

    如何检测右键单击+左键单击

  2. 2

    如何检测鼠标中键单击?

  3. 3

    如何检测鼠标中键单击?

  4. 4

    如何检测鼠标中键单击?

  5. 5

    如何在Pygame中同时检测鼠标左键和右键单击

  6. 6

    如何检测pygame中嵌套按钮内的鼠标单击

  7. 7

    如何检测鼠标在pyside中绘制的椭圆上单击?

  8. 8

    如何检测控件上的完整鼠标单击(上下)?

  9. 9

    如何检测在pyside中绘制的椭圆上的鼠标单击?

  10. 10

    如何统一检测鼠标在GUITexture上的单击

  11. 11

    如何在单击鼠标左键而不是单击鼠标右键时打开D3.js上下文菜单

  12. 12

    如何在单击鼠标左键而不是单击鼠标右键时打开D3.js上下文菜单

  13. 13

    检测游戏对象上的鼠标单击

  14. 14

    检测游戏对象上的鼠标单击

  15. 15

    如何检测鼠标单击PySide Gui?

  16. 16

    如何在行的单击按钮上检测indexPath?

  17. 17

    如何使jstree仅在单击鼠标左键时选择节点?

  18. 18

    如何在鼠标左键单击时禁用jqgrid的行选择

  19. 19

    可以在MFC按钮控件上检测到鼠标右键单击事件吗?

  20. 20

    如何检测单击了哪个按钮?(Pynput)

  21. 21

    如何检测单击了哪个按钮-Java

  22. 22

    如何检测单击了哪个单选按钮?

  23. 23

    如何检测单击了哪个删除按钮?

  24. 24

    如何检测在javascript中单击了哪个按钮?

  25. 25

    如何检测使用javascript单击了哪个按钮?

  26. 26

    仅当用户在角度 4 的特定组件中单击浏览器的后退按钮时,如何检测或运行功能?

  27. 27

    使用jQuery检测每个实例的鼠标滚动,而不是每次单击

  28. 28

    单击后如何检测鼠标按钮是否被按下一定时间

  29. 29

    检测单击操作栏上的后退按钮-(单击操作栏上的后退按钮时未调用OnOptionsItemSelected)

热门标签

归档