zoukankan      html  css  js  c++  java
  • Unity UGUI Button 无法点击问题一例

    理论上,只要一个按钮自己这一层或者子节点有一个控件勾选了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度旋转的吧.

  • 相关阅读:
    构建自己的yara数据库
    Java反序列化漏洞研究
    我喜欢的资源
    jvm-垃圾收集
    jvm-内存
    java设计模式--行为模式
    java设计模式--结构型模式
    java设计模式--简介
    netty之 -- 手写rpc框架
    netty之---核心源码剖析
  • 原文地址:https://www.cnblogs.com/wmalloc/p/8444228.html
Copyright © 2011-2022 走看看