- Home /
AddListener() Javascript
So here's the deal: I want to add a listener to a prefab button the moment I instantiate it. I have found an example that appears to work for everyone in C#, but I can't seem to get or find the proper syntax for adding it.
This is the line I am trying to use to set the listener:
buttonBuilder.onClick.AddListener
(
CardClicked(buttonBuilder.GetComponent(Animator))
);
The error I recieve is:
Assets/GameScript.js(59,25): BCE0023: No appropriate version of 'UnityEngine.Events.UnityEvent.AddListener' for the argument list '(void)' was found.
Answer by Cocobongo · Jan 12, 2015 at 03:00 PM
Maybe
buttonBuilder.onClick.AddListener
(
function() { CardClicked(buttonBuilder.GetComponent(Animator)) }
);
Would work instead?
My guess is that atm, you are calling CardClicked(...)
instead of passing it as a function.
Thank you very much for your help!! Couldn't seem to find an example of how to pass a function. This fixed my problem instantly!
Now to undo all the nonsense I went through trying to find a way around this, lol.
Thanks again!
So I can now call the function when a button is clicked. $$anonymous$$y problem now is, I used a nested loop to Instantiate all the buttons and assign the OnClick function. Therefore all the buttons have the very same OnClick function and all flip the last card created.
Is there a way to assign them that wont reference a variable?
Answer by Fomin · May 27, 2018 at 11:51 AM
if you use loop for:
function addListener_( yourBtn: Button){
yourBtn.onClick.AddListener( function(){ yourCallBack(//param. if necessary);});
}
function yourFunction() {
for(){
//here you create an instance of the object
addListener_( yourBtn);
}
}
function yourCallBack() {}
Your answer
Follow this Question
Related Questions
Weird behaviour when trying to dynamically create buttons 0 Answers
My onclick action listeners I attach to my buttons as I instantiate them only work once 1 Answer
How I can reuse a bullet prefab whith enemies and my character? 1 Answer
button.onClick.AddListener(method); NOT Working 1 Answer
Calling a function from a PreFab 1 Answer