后面的图层有按钮A
中间的图层是一个触摸屏蔽层
前面的图层有按钮B,B在A的上方
当B可点时一切正常
当B不可点时,点击B,A会相应。可是中间还有一个触摸屏蔽层
麻烦大神解释一下…
后面的图层有按钮A
中间的图层是一个触摸屏蔽层
前面的图层有按钮B,B在A的上方
当B可点时一切正常
当B不可点时,点击B,A会相应。可是中间还有一个触摸屏蔽层
麻烦大神解释一下…
说实话,你做个demo,让引擎人员测试一下,你这么说,很容易会没人理你的。。。
而且不知道是不是你自己的代码的问题,最好有demo
这样啊,好吧;demo怎么给他们?
直接把 demo 弄成一个 zip 包上传到这个帖子里面。
屏蔽层是不是没注册触摸事件?如果没注册只是放一个图层在那里是挡不住触摸的
注册了的,上面有demo压缩包,
你的btn_c的interacable属性没勾,btn_c被禁用了
问题就是点击一个禁用的按钮,点击事件会穿过中间的屏蔽层,到达下层按钮或者下层有触摸监听的图层。就好像禁用的按钮是屏蔽层开的后门
你的层级结构
btn C 虽然是 interactable 为 false,但是 button 组件依然是 enable 的,所以还是会截获事件,只是自身不会响应,那么他会忽略了自身的 button 回调之后,会 propagate 给自己的父节点,也就是 Canvas。
这个行为是目前设计如此,具体原因要问 @zilong
Button 的 interactable 的设计是 button 本身的行为控制的一个属性,如果为 false,则 Button 自身的逻辑处理会暂时屏蔽。(但是并不影响事件的侦听,因为你可能需要动态地激活和反激活 Button)
而组件的事件注册和反注册,为了统一,我们所有的 UI 组件都是在 onEable 和 onDisable 的时候注册和反注册的。
通俗易懂,明白了,感谢简惑!
好吧!看来就是没办法了,我已经迂回得解决了我的问题。谢谢简惑!
借贵宝地问一下,上面说的事件,是不是指的是Button组件挂载的Node上添加的监听事件?而interactable针对的是Button组件中通过ClickEvents添加的事件?
恩,可以这么理解。Button 的 interactable 不仅影响 事件,还影响行为,比如说不会做 Transition 了。