wmalloc

理论上,只要一个按钮自己这一层或者子节点有一个控件勾选了RaycastTarget,并且按钮为Interactable的.并且不被其他可以点击的控件阻挡,那么这个按钮就可以被点击

在调一个界面时发现一个诡异的问题,有个按钮死活无法点击,EventSystem无法检测到.旁边的一个按钮却是ok的

对比了下,发现两者的区别是:

可点击的  x轴旋转-180

不可点击  无旋转

将不可点击的旋转-180,发现可以点击了

排查父节点,发现父节点挂了个Image为了做表现,旋转了180.

既然确定问题是旋转导致的,google了一下,发现了帖子:

https://forum.unity.com/threads/button-with-rotation-y-180-can-not-click.293482/

确认UGUI无法接受反向按钮的点击.

在和同事讨论时,同事提醒,有个开关是否接受反转的点击,即 Graphic Raycaster 的 Ignore Reversed Graphics这个选项

当然这个选项默认是勾选的,不接受反向点击,为点击时检测的性能考虑.

所以这种情况下,还是要靠做界面时留心下旋转.不建议关闭这个开关

后面试了下,哪怕把这个勾关掉,如果我旋转90度自然也是无法接受点击的

看了下相关源码,是按这个Gameobject的Vector3.forward去算的.所以还是要小心

当然可以考虑写一个脚本,检测这种forward是不是面向屏幕的,并校正

一般来说,没有可点击的物体是背对屏幕或者是90度旋转的吧.

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-07
  • 2022-02-23
  • 2021-06-21
  • 2021-07-05
猜你喜欢
  • 2021-11-26
  • 2021-10-18
  • 2021-12-13
  • 2022-12-23
  • 2022-12-23
  • 2021-05-03
  • 2021-11-30
相关资源
相似解决方案