- Home /
How do I make buttons that were instantiated at run-time do anything?
Hello,
In my program I am instantiating buttons at run-time. These buttons are being instantiated with reference to a main object, a car. The buttons refer to all the parts of the car. When I click a button, I want the camera to zoom in on the correct car part. The buttons have the same text as the car parts. Since they are being instantiated from one prefab at run-time, I don’t know how to code it where if I click on it, it zooms in on the correct part.
My first attempt was to attach a script to the button prefab that when clicked it would read its own text (because it grabs the text from all the children in another script) then it would read all the children text, and compare and find where the button text was the same as the children part text, then it would grab that child GameObject and it would reference that GameObject’s transform and transform the camera to the location.
I can transform the camera and everything because I have already done this by using raycast to click the car part, but I just don’t know how to assign onClick to the buttons. The code needs to be reusable so I was trying to design it where it could be used for any object ...
Answer by Getsumi3 · Mar 04, 2020 at 08:21 AM
Hi @maw0041
Unity Scripting API is your best friend, so use it!
Here is a link to the docs how to assing onClick event from a script: https://docs.unity3d.com/2019.1/Documentation/ScriptReference/UI.Button-onClick.html
And here is an example of code for those who are lazy to click on link
void Start()
{
//Calls the TaskOnClick method when you click the Button
YourButton.onClick.AddListener(()=>TaskOnClick());
}
void TaskOnClick()
{
//Output this to console when Button is clicked
Debug.Log("You have clicked the button!");
}