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度旋转的吧.

原文地址:https://www.cnblogs.com/xixidaguai/p/8444228.html

时间: 2024-11-10 23:58:20

Unity UGUI Button 无法点击问题一例的相关文章

unity, ugui button 禁止重复点击

如上图,button名称为btn_sim,当点击button后,开始播放zoomToTarget动画.为了防止在动画播放过程中再次点击button导致动画被打断,希望当首次点击button后button不再接受点击,可用下面方法实现此的效果:

安卓给button增加点击事件

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mmmm); //获取XML里面的button Button button=(Button)findViewById(R.id.button1); //给button增加点击事件 button.setOnClickListener(new OnClick

通过UIView来模拟 实现 Button的点击效果

首先建立根视图 在根视图上实现以下功能: 通过MyButton 实现 button的点击效果 首先建立一个类:MyButton这个类 1.在MyButton.h文件中写一个自定义的方法,把目标和对应的动作传过来 原代码: -(void)addNewTarget:(id)target Action:(SEL)action; target :目标 ,button 执行哪一个类的方法,对应的目标就是那个类的对象 action:动作 ,让button具体做什么事,执行的方法就是对相应的动作 2.在MyB

Unity UGUI —— 无限循环List

还记得大学毕业刚工作的时候是做flash的开发,那时候看到别人写的各种各样的UI组件就非常佩服,后来自己也慢慢尝试着写,发现其实也就那么回事.UI的开发其实技术的成分相对来说不算多,但是一个好的UI是绝对少不了底层组件的支持的.我个人认为UI组件中相对比较复杂的就是List了,所以,这两天实现了一个UGUI的list,写了好几个版本,最终这个版本是相对比较好用的,在这我介绍一下大概思路,一是巩固一下知识做个记录,二是发扬一下分享精神.嘿嘿,大家多多赐教. 写List有两个重点是需要考虑的: 1.

android ListView中的Item有Button时候点击异常处理

1.当ListView中有Button的时候往往会遇到很多问题,比较常见的一个问题是: 假设:在ListView中有N个Item当点击其中某个Item中的Button的时候,需要改变当前Button的状态,在你点击以后确实最后一个Item的Button的状态改变了,不管点击哪一个Button都是最后一个 Item的中的Button的状态被改变了,这里涉及到ListView重绘的问题. 要解决上面的问题的方法是将点击的监听事件提出来进行封装,在用就可以解决上述问题了. 给个示例代码: 在ListV

ios 添加到cell 上的button点击无效!扩大button的点击区域(黑魔法)

一般情况下点击效果都是正常的!要不然你对它做了什么?一般细心的小伙伴都没有遇到这种情况,但是呢! 当然我是二班的!在这里我主要讲两个问题,解决问题和普及魔法. 一.普及问题(button在cell上点击无效) 自定义一个cell,cell里边creat了一个button!然后调试了半天,什么反应都没有! 1.button的enable 设置为yes可点击的. 1.我以为我设置了交互禁用! self.userInteractionEnabled = YES; 2.button的frame越界了!

ListView的Item被点击和其中的Button被点击同时生效

Android开发中在ListView中经常有Button或ImageButton等需要被点击的控件,如果不加一些特殊的限制,有可能ListView的Item的点击事件或Button的点击事件,其中一个不能响应.我遇到的情况是ListView的Item不能响应点击事件. 解决的办法,在ListView的Item的xml文件中添加如下属性: 1)整个xml文件的根元素如LinearLayout中添加属性android:descendantFocusability="blocksDescendant

Cocos2d-x3.0 载入Cocostudio的UI后,button无法点击的解决方法

原帖地址:http://blog.csdn.net/musicvs/article/details/28390617 近期发现不少朋友都遇到这个问题,用Cocostudio的UI编辑器创建好UI后,在代码中载入UI.然后给button(Button)加入点击监听事件,发现不管怎样都点击不了button,没有不论什么反应. 或者,往button的以下一些位置点击,却发现button被点击了.点击坐标的位置明显和button的位置有偏差. 笨木头花心贡献,啥?花心?不呢.是用心~ 转载请注明,原文地

iOS防止button重复点击

项目中常会遇到在按钮的点击事件中去执行一些耗时操作.如果处理不当经常会出现连续多次点击push多次的情况,造成不好的用户体验. 一种情况是用户快速连续点击,这种情况无法避免.另一种情况是点击一次后响应时间太长,导致用户一直停留在点击界面,也会去再此点击按钮确认是否能执行下一个界面.虽然我们可以在用户点击一次后去显示一个HUB窗口隔绝用户操作,但我们并不清楚服务器去响应这个操作究竟需要多长时间,如果HUB指示器显示时间太长会显得响应特别慢,如果太短,用户很可能在指示器消失后再去点击Button,这