- Home /
UI toggle.onValueChanged assigning method via script
Hello. I'm creating multiple UI toggles at runtime. I want each of them to change a boolean public field of some instance of a class. Here, I have multiple characters and each toggle should make each of them 'sleep' or 'travel'. But it appears that all the toggles influence only the last created character in a weird way.
foreach (TeamMember tm in dictionaryyy)
{
// ...
GameObject toggleSleep = (GameObject) GameObject.Instantiate (ToggleSleepPrefab);
toggleSleep.transform.SetParent (newOutput.transform);
toggleSleep.GetComponent<Toggle>().onValueChanged.AddListener
(delegate
{
if (toggleSleep.GetComponent<Toggle>().isOn)
tm.setAction(Enums.Actions.Sleep);
else
tm.setAction(Enums.Actions.Travel);
}
);
}
Oh yeah, tm.setAction(Enums.Actions a) is defined in TeamMember class and it's just a setter for one variable.
Here's a screenshot to give you an idea of what I'm talking about.
I've never really used delegates, I've used events in a simple way a couple of times, that's it. I'm not an advanced-level programmer, so please try to explain everything :)
Thanks very much!
Answer by kaka24fan · Apr 13, 2015 at 06:38 PM
Ok, I made it work, but in a roundabout fashion. Now each "line" called singleOutput holds the proper character's ID and then:
toggleSleep.GetComponent<Toggle>().onValueChanged.RemoveAllListeners();
toggleSleep.GetComponent<Toggle>().onValueChanged.AddListener
(delegate
{
//Debug.Log (toggleSleep.GetComponent<Toggle>().isOn.ToString ());
if (toggleSleep.GetComponent<Toggle>().isOn)
teamMembers[toggleSleep.transform.parent.GetComponent<IDholder>().list[0]].setAction(Enums.Actions.Sleep);
else
teamMembers[toggleSleep.transform.parent.GetComponent<IDholder>().list[0]].setAction(Enums.Actions.Travel);
}
);
Probably the first line showed above isn't necessary but I'll just leave it as is. Cheers
Your answer
Follow this Question
Related Questions
add delegate to toggle in unity 4.6 UI 2 Answers
Video Player time slider 2 Answers
How do I create an undertale player health bar in C #? 1 Answer
Need help with Tricky problem with Distance calculation 0 Answers
UI Toggle Component Broken? 0 Answers