Unity 之 UGUI Button 点击无响应问题汇总

2021-03-18 10:46发布

近日开发遇到了的问题,,,Unity UGUI Button 点击不响应,,,

解决方法:

1, 查看所在的场景是否存在EventSystem,,若不存在那么当然检测不到了,这个物体时创建UI时Unity自动为我们创建的所以有时候会忽略

2,对按钮的坐标轴做了旋转,,,

(我遇到的问题,为了使其图片箭头朝向想要的方向,将其Y轴做了旋转,解决方案通过旋转Z轴得到自己想要的朝向,不对Y轴进行旋转),,当对Y轴旋转之后,使得按钮背面朝向我们(即点击方向),所以,触发不到按钮。 或者不对按钮进行旋转,将其某个轴的scale由1改为-1,也可以达到旋转的效果。


3, 查看按钮上的是否存在其他UI,把按钮遮盖住了,,,使用Button 的时候,点击上去默认是有明暗变化的,使用EventTrigger时,点击是没有明显效果的,可以打断点或者Debug输出一下,已查看效果…


4, 按钮的Target graphic属性没有赋值,这个属性必须赋值。可以在按钮物体上添加一个Text组件或者Image组件来作为按钮的Target graphic。

5, 按钮上注册的点击事件脚本丢失,,,或者在代码了写的注册事件没有被执行…

6, 在Canvas下有个Graphic Raycaster 的 Ignore Reversed Graphics这个选项,

6

当然这个选项默认是勾选的,不接受反向点击,为点击时检测的性能考虑.所以这种情况下,还是要靠做界面时留心下旋转.不建议关闭这个开关后面试了下,哪怕把这个勾关掉,如果我旋转90度自然也是无法接受点击的,看了下相关源码,是按这个Gameobject的Vector3.forward去算的.所以还是要小心当然可以考虑写一个脚本,检测这种forward是不是面向屏幕的,并校正一般来说,没有可点击的物体是背对屏幕或者是90度旋转的吧.


7,若场景中存在多个Canvas,则是被其他Canvas覆盖了,若是Screen Space - Overlay就将Sort Order 调大一点

若是Screen Space - Camera 就对下图位置的层级关系做调整就可以了…

8.评论区补充:
如果button的某个active父物体挂载有Canvas Group 如果Canvas Group 的block raycast 或者 interactable没有勾选,则button也会不响应点击




————————————————

版权声明:本文为CSDN博主「妳是我改卟了的bug」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Czhenya/article/details/84575011