在游戏开发的过程中,经常会遇到某些操作在碰触到UI的情况下不执行。整理了一下,我目前所了解的有两种方式去判断。
第一种是射线,用UICamera发射一条射线,如果这条射线碰触到东西,说明就点击到了UI的元素。代码如下:
private Camera myCamera;
private Ray ray;
RaycastHit hit;
public LayerMask layer;
// Use this for initialization
void Start () {
}
public bool Detection()
{
if (myCamera) {
ray = myCamera.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, 100f, layer))
{
return true;
}
}
return false;
}
void OnEnable() {
myCamera = GetComponent<Camera>();
}
这个脚本挂在UI的Camera其中,layer表示层,可以供我们自己选择。Detection函数的返回值为真,就说明射线碰触到了东西。
第二种方式其实更简单,在高版本的NGUI中,UICamera中有一个变量isOverUI,
这个值为真时,表明碰到了UI,否则没碰到UI。