利用Unity3D 自带的UI组件做界面时,因为Button组件不能很好的满足需求。所以很多时候是手动在控件上添加BoxCollider2D组件。
这时候很容易遇见一个问题:
“有两个panel上都加上了BoxCollider2D组件,Apanel上点击某按钮,弹出Bpanel,这时候因为Apanel还存在,上面的BoxColider2D也会收到鼠标点击事件,所以在Bpanel上点击按钮时会对Apanel上的按钮误操作。”
一个解决方法是在Bpanel的整个背景上添加BoxCollider2D组件,吞噬掉鼠标点击事件。
但是实践中发现,AB两个panel所处的Layer很可能是一样的,虽然我们通过修改渲染顺序使得Bpanel显示在前面了,但是Apanel上按钮的触摸层级很可能比Bpanel还要高。
这时候只需要调整Bpanel的RectTransform中的posz,使其更靠近相机,则Bpanel背景上的BoxCollider2D,就会把Apanel的所有触摸都挡住。