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!