问题. imge 和 button重叠时,imge 覆盖在button上面,导致点击事件无法传递到button。
1.给imge 添加 【Canvas Group】组件
2.修改【Canvas Group】组件,属性 【Blocks Raycasts】 为false (就是不勾选)。
https://www.cnblogs.com/YaChing/p/5909643.html
如何控制UGUI触摸 使可以控制穿透UGUI触摸到其它物体
方法1: 其它物体通过 EventSystem.current.currentSelectedGameObject 来进行判断 那么就是UGUI当想穿透的时候,不能有selected触发
方法2: 底层加一个Panel 凡是需要穿透的物体,加一个Cancas Group,然后关闭拦截,让其穿透
方法3: 根据EventSystem.current.IsPointerOverGameObject,据说有bug
方法4: 给摄像机添加 PhysicsRaycaster ,然后3D物体就可以使用UI的事件接口
由于IPointerClickHandler不需要Selectedtable控制,但是又受其限制 所以不建议对没有Selectable组件的物体添加IPointerClickHandler 但是IPointerClickHandler即使Selectable的interactable为false也会触发
对于需要使用interable = false的物体,添加上IPointerClickHandler,触发的时候让Selectedtable物体为该物体
对于想要穿透的,添加一个空的Event Trigger,否则EventSystem.current.currentSelectedGameObjec非空,并且会产生颜色变化 对于不想要穿透的,只要该物体直到跟父物体,有一个物体有Selectable组件,并且第一个物体interable为true即可(小心点击事件会被触发,所以不建议) 没有Selectedable不想被穿透的,还是建议添加Selectedtable,EventTrigger也行,但是EventTrigger就不会让Selected为该物体了 对于原本有Selectable组件的,但是可能被关掉的,可以用EventTrigger或IP将Selected指向该物体
至于Selected,在OnClickDown的时候决定的
OnClick事件触发优先级大于OnPointerClick OnClick先添加先触发
Selectable需要Image
对于只有IPointerClickHandler 没有Selectable组件的物体 如果直到根父节点都没有Selectable组件 那么该IPointerClickHandler事件会被触发 但是EventSystem.current.currentSelectedGameObject为空
否则,该IPointerClickHandler事件不会触发 同级物体不会触发,直接跳到有Selectable的父级物体
但是,父级物体不会触发OnClick和IPointerClickHandler事件(原物体得有IPointer事件,也就是没有的话,还是会触发的) 但是选中效果会被触发,EventSystem.current.currentSelectedGameObject为该父物体 这是bug,就算父物体不在点击范围也会被触发到
关闭Interactble 将会导致拦截了触摸事件,IPointerClickHandler能触发 但是EventSystem.current.currentSelectedGameObject为空
EventTrigger实现的IPointerClickHandler 就算没有Selectable也能触发 但是EventSystem.current.currentSelectedGameObject为空
以上这些都仅在同一个Canvas里面生效,不会跨越Canvas