Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
790 views
in Technique[技术] by (71.8m points)

unity3d - Detect mouse clicked on GUI

I got a problem in my project. I want to know that mouse cliked happend on GUI or on any game object. I have tried this but it is showing null reference exception

EventSystem eventSystem = EventSystem.current;
            if (eventSystem.IsPointerOverGameObject())
               Debug.Log("left click over a gui element");

how to detect?? Is there any event available or else?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

IsPointerOverGameObject() is fairly broken on mobile and some corner cases. We rolled our own for our project and it works like a champ on all platforms we've thrown it at.

private bool IsPointerOverUIObject() {
  PointerEventData eventDataCurrentPosition = new PointerEventData(EventSystem.current);
  eventDataCurrentPosition.position = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
  List<RaycastResult> results = new List<RaycastResult>();
  EventSystem.current.RaycastAll(eventDataCurrentPosition, results);
  return results.Count > 0;
}

Source: http://forum.unity3d.com/threads/ispointerovereventsystemobject-always-returns-false-on-mobile.265372/


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...