- Home /
How can I make a Button's OnClick() list shorter?
is there any way to make it quicker this button thing? I have multiple gameobjects that they have same script. But I have to add all of them to button On Click() list to activate them seperately. For example: I have letters seperately using same script. player is selecting the letter. Lets say "A" and "B" is the selected letter. When player click "try" button "A" and "B" is shaking because thats not the true word. but the other letters on the scene is not shaking. I managed this situation by adding all the letters seperately in same button as you see in the ScreenShot. But I am asking that can I make it easier?
(I am using same method for a delete button. It makes so hard to create new levels , taking too much time on this way.
Answer by SirPaddow · Jun 09, 2019 at 08:47 PM
I don't think it is possible to make the list shorter in the inspector (or maybe creating custom editor classes). But I wonder if there's a good reason for you to want to make it through the inspector and not through script. Your harfclick script could register itself to the event of the button like this:
public class harfclick : MonoBehaviour
{
public Button tryButton;
public void Start()
{
tryButton.onClick.AddListener(ShakeMe);
}
private void ShakeMe()
{
// this is called when the button is clicked
}
}
this is what I was looking actually. Thank you so much!
I wonder one more thing, is it possible to add that public button to prefab?
You wont be able to reference a button (or anything) if it is not in the same prefab. Depending on how you create your UI,
if you create all your harfclicks in Unity, you can reference it in the inspector (where your prefabs are actually instantiated),
if you instantiate your harclicks through a controller, you can do something like this:
public class harfclick : $$anonymous$$onoBehaviour { public void Shake$$anonymous$$e() { // } } public class UiController : $$anonymous$$onoBehaviour { public Button tryButton; public harfclick harclickPrefab;
public void Start() { for (int i = 0; i < 5; ++i) { harfclick newInstance = Instantiate(harclickPrefab); tryButton.onClick.AddListener(newInstance.Shake$$anonymous$$e); } } }
But yes, in any case, you need a script in your scene that actually got a reference to the button.
Your answer
Follow this Question
Related Questions
Only want to detect button click event 1 Answer
How do I make a UI button to click a key? 1 Answer
How to use button multiple times 1 Answer
Detect UI Button Click Event in Update method 3 Answers
Unity UI Button not working 1 Answer