- Home /
Raycasting UI components
I have a UI Button and I want to be able to tell when a mouse is over it . It has a specific tag on it in order to know when mouse is over it. When mousing over the UI Button it never prints out that tag, but tags get printed out for 3D objects though in the scene.
Basically I wan to raycast a UI Button.
Any ideas?
// Update is called once per frame
void Update () {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//touch.position
RaycastHit hit;
if (Physics2d.Raycast(ray, out hit, 1000)) {
print("tag "+hit.transform.tag);
}
}
Answer by Zoelovezle · Jan 09, 2016 at 02:50 AM
You dont need to use Raycasting , theres already message function for this .
Is there a way to tell with raycasting though? Since my whole project touchcontroller is based on telling what tag object I am over when touching / mouse pointing?
Answer by meat5000 · Mar 28, 2016 at 08:05 PM
For the new UI system you can use OnPointerEnter interface.
Contains Example: http://docs.unity3d.com/ScriptReference/UI.Selectable.OnPointerEnter.html
Available Interfaces: http://docs.unity3d.com/ScriptReference/EventSystems.EventTrigger.html
You can use a GraphicRaycaster but the EventSystem already generates raycasts when implementing the interfaces for working with the pointer/touch etc.
Answer by BenWiller1989 · Mar 31, 2021 at 12:10 PM
If you like a simple solution : Use a Event Trigger Component and add a Pointer Enter and Pointer Exit Event or any other New Event Type you like.
Your answer
Follow this Question
Related Questions
Can't interact with world space ui button when cursor mode is locked any solutions? 1 Answer
Toggle/Button is Clickable Behind Image unless Image has no Parent? 0 Answers
UI Buttons visible but not clickable when using two canvases. 3 Answers
UI Image not blocking raycast 3 Answers
UI button and raycast script that I have made both aren't working to change my scene 1 Answer