好记性不如烂笔头,况且是我这种没脑子的人....还是记一下这个以后方便用好了...
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上");
}
}
}