- Home /
Blocking and not blocking input in new uGUI 4.6
So I was looking for a way to block input if a button was pressed and naturally came upon the EventSystem.current.IsPointerOverGameObject()
function. This helps with what I want but unfortunately it causes issues in other places. If I call this function it doesn't distinguish between certain things. I'll set up an example scene:
Lets say I want to set the color of cubes that I click on in the scene and I have a button in the UI that changes the color that I'm setting them to. Now, when I click this button, I don't want the cube behind it to set it's color as well, so I use the function mentioned above and if it returns false, then I cast a ray to see if a cube is hit. The problem comes in when I have an image in the UI that I do want clicks to go through ( this image could have alpha transparency or just be something I want to ignore ). The function returns true if the click happens on the image as well. So I can't decide which things actually catch the input.
In other UI solutions these UI elements would just have colliders on them if I wanted them to catch input, but this is not the case in uGUI. How do I solve this situation?
Answer by spiceboy9994 · Jan 19, 2015 at 06:50 PM
What about disabling the button once it has been clicked?. If its the case that you want to disable the same button that you just clicked you could try to add a click trigger and then add reference to the button:
using UnityEngine.UI;
public class MyButtonBehavior;
{
private Button myButton;
void Start() {
myButton = transform.GetComponent<Button>();
}
void myButtonClick() {
myButton.interactable = false;
}
}
That would disabled the button once it has been clicked. Remember to attach the event to the click events of the UI Button.
This isn't the problem I'm having, I want to be able to click through some of my UI controls and not through other UI controls. Hence, the whole EventSystem.current.IsPointerOverGameObject()
function.
Your answer
Follow this Question
Related Questions
How to make UI block clicks from triggering things behind it 7 Answers
Collider Blocking Worldspace Canvas? 1 Answer
Detect only UI button click 3 Answers
Allow Click Through some UI Elements 1 Answer
Make "polygon" collider for UI element 4 Answers