Unity 判断鼠标或手指是否点击在UI上以及IsPointerOverGameObject在移动端时检测失败(NGUI)

当我们在游戏开发时,有时点击UI会触发其他事件的响应,所以我们需要对点击到的东西进行判断,判断是否点击到UI上。

方法一:Update中进行判断

UGUI提供的一个检测是否点击在UI上的方法 EventSystem.current.IsPointerOverGameObject();

	private void Update () {
			if (EventSystem.current.IsPointerOverGameObject ())
				return;
	}	

备注:利用UGUI提供的方法在PC端上可以正常检测,但在真机上时无法被检测到,所以如果需要在真机上检测是否点击到UI,我们可以通过定义一个类,让射线进行检测。

方法二:通过射线进行检测

private bool IsPointerOverGameObject(Vector2 mousePoint){
		//创建一个点击事件
		PointerEventData eventData=new PointerEventData(EventSystem.current);
		eventData.position = mousePoint;
		List<RaycastResult> raycastResults = new List<RaycastResult> ();
		//向点击位置发射一条射线,检测是否点击到UI
		EventSystem.current.RaycastAll (eventData, raycastResults);
		return raycastResults.Count > 0;
	}
	
private void Update(){
		if (IsPointerOverGameObject(Input.mousePosition)) {
				return;
		}
}

你可能感兴趣的:(Unity 判断鼠标或手指是否点击在UI上以及IsPointerOverGameObject在移动端时检测失败(NGUI))