- 两张图片,如头像框,头像在背景图之上,头像会挡住背景的点击事件,要实现全框的点击效果,只需要将头像作为背景的子物体就可以了。当然头像上不能有Button组件。
- 自带的CanvasGroup组件可以实现屏蔽其下所有UI的点击等事件触发,也可以实现整休改变所有子UI的alpha透明度。
- RectMask2D,类似Mask,但:
the limitations of RectMask2D control are:
- It only works in 2D space
- It will not properly mask elements that are not coplanar
The advantages of RectMask2D are:
- It does not use the stencil buffer
- No extra draw calls
- No material changes
- Fast performance
- UI和3D场景同时都需要响应触摸事件,在判断3D响应之前要先判断手指是否点击在UI上:
void Update () { if (EventSystem.current.IsPointerOverGameObject ()) Debug.Log ("当前触摸在UI上"); else Debug.Log ("当前没有触摸在UI上"); }
另外PhysicsRaycaster可以做MASK层次过滤,可以屏蔽你不想要的层触发点击事件,不过貌似对于2d物体没有作用。
Graphics Raycaster的Raycast是个虚函数,可以写个Graphics Raycaster的派生类,在默认的Raycast操作执行完以后,用自定义的layer进行筛选,把不需要响应的gameobject去掉。这样就可以实现只响应某个layer的需求了。新手引导中只要把需要响应的gameobject设置为特定layer就行了。
时间: 2024-08-06 01:23:43