Avisek Chakraborty
Avisek Chakraborty

Reputation: 8309

How to get the gameobject- which triggered the UI.Button click function

in Unity 5- I am trying to disable a ui.button- once it is clicked. There is a list of buttons- among which- the clicked one will be disabled. But I am not sure, if it is possible to get the event triggering gameobject.

Unity Editor-

enter image description here

Code:

    // called from ui.button clicks
    public void callThisMethod(string param) {

        // how to get the clicked button gameobject here 

    }

Upvotes: 0

Views: 7862

Answers (3)

thunderJam
thunderJam

Reputation: 99

Just Add another event to return the button

enter image description here

public Button ButtonPressed(Button ThisButton)
{
     return ThisButton;
}

Upvotes: 2

Yusuf
Yusuf

Reputation: 2388

Pass the gameObject of the button as a parameter while your are adding event listener to the UI button.
Hope that helps:

GameObject myButtonGameObject = myButton.gameObject;

myButton.onClick.AddListener(() => {LogName(myButtonGameObject); });

public void LogName(GameObject buttonGameObject = null){
    Debug.Log(myButtonGameObject);
}

Note: The given approach is useful, when you need to dynamically show the clicked buttons name, but if you know the exact button, you can make a public field for the myButton and get the name without passing any parameters.

Upvotes: 0

moarorleslie
moarorleslie

Reputation: 46

You can add something like this to your code:

   public Button yourButton;

   public void yourButtonClicked(){
         yourButton.interactable = false;
    }

Assign your button to the Button object in inspector. Then where it says "On Click()" in the image you have above, select the script the above code is added to, and select the "yourButtonClicked()" function. That will disable the button once it is clicked.

To get your clicked button game object, you can use: EventSystem.current.currentSelectedGameObject

Upvotes: 1

Related Questions