Unity 判断鼠标是否点击在UI上
问题描述
提示:这里描述项目中遇到的问题:
PC端 鼠标点下的时候判断下边的这行代码就好了
EventSystem.current.IsPointerOverGameObject() 为true 点击在UI 为false 没有点在UI上.
public static bool IsPointerOverUI(Vector3 point)
{
PointerEventData eventData = new
PointerEventData(UnityEngine.EventSystems.EventSystem.current);
eventData.pressPosition = point;
eventData.position = point;
List<RaycastResult> list = new List<RaycastResult>();
UnityEngine.EventSystems.EventSystem.current.RaycastAll(eventData, list);
return list.Count > 0;
}
还有雨松大佬的 手机端的情况
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityEngine.EventSystems;
public class NewBehaviourScript : MonoBehaviour {
// Use this for initialization
void Start () {
}
void Update()
{
if (Input.GetMouseButtonDown(0)||(Input.touchCount >0 && Input.GetTouch(0).phase == TouchPhase.Began))
{
#if IPHONE || ANDROID
if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
#else
if (EventSystem.current.IsPointerOverGameObject())
#endif
Debug.Log("当前触摸在UI上");
else
Debug.Log("当前没有触摸在UI上");
}
}
}