私はトグルにリスナーを追加しようとするまで動作するリストから動的に追加されたトグルのリストを作成しようとしています。 SelectColorに渡される値は、各トグルに対して1ずつ増加しますが、渡される値は配列の長さとまったく同じです。各トグルの最後のインデックスの上に常に1のインデックスを置く。Toggleに動的addListener
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
これが私の最初の試みでした。それは同じ結果をもたらした。いつも返されます。 –