Я пытаюсь создать список Toggles, добавленный динамически из списка, который работает до тех пор, пока я не попытаюсь добавить слушателя к переключателям. Значение, переданное SelectColor, должно увеличиваться на единицу для каждого переключения, но переданное значение - это точно длина массива. помещая индекс всегда 1 над последним индексом для каждого переключения.Динамически addListener to Toggle
foreach (HexLand color in colors) {
Toggle option = Instantiate<Toggle> (ColorTogglePrefab);
option.transform.SetParent (EditorOptions.transform);
option.name = "Toggle " + color.Name;
option.group = toggleGroup;
if (i == 0) {
option.isOn = true;
} else {
option.isOn = false;
}
option.GetComponent<HexLandOption>().label.text = color.Name;
option.onValueChanged.AddListener (delegate {
SelectColor (i); // current usage has array length 2. i always returns 2.
});
i++;
}
public void SelectColor(int index) {
Debug.Log(index); // Writes 2 to console.
activeColor = colors [index].Color;
}
Есть ли способ, который я могу использовать для обеспечения того, чтобы каждый переключатель правильно возвращал значение?
Может быть, использовать для петли? – Programmer
Это была моя первая попытка. он дал тот же результат. всегда возвращался 2. –