У меня проблемы с использованием созданных во время запуска кнопок в Unity 5. Кнопки создаются правильно, но у меня есть некоторые проблемы с слушателями. Я использую этот код для создания кнопки:Unity 5 fix Listener calls
foreach (string str in _scene.PDF_ITEMS)
{
button = (GameObject)Instantiate(_primitive);
button.GetComponent<Button>().onClick.AddListener(() => OpenPDF(str));
button.GetComponentInChildren<Text>().text = str;
button.GetComponent<Transform>().SetParent(this.transform, false);
GetComponent<RectTransform>().anchorMin = Vector2.zero;
GetComponent<RectTransform>().anchorMax = Vector2.one;
width++;
}
И это функция OpenPDF:
private void OpenPDF(string name)
{
string comandType;
if (_scene.isCurrent(ArrayUtility.IndexOf<string>(_scene.PDF_ITEMS, name))) comandType = ControllerScene.IN_CLOSE_ITEM + "";
else comandType = ControllerScene.IN_OPEN_ITEM + "";
_inj.addComand(comandType, "" + (ArrayUtility.IndexOf<string>(_scene.PDF_ITEMS, name)));
}
Проблема заключается в том, что когда я играю сцену и нажмите на кнопку, он запускается слушателя последней кнопки, которую я создал (функция OpenPdf имеет в качестве parm последнее значение «str» в цикле foreach).
ИТАК проблема заключается в том, что я дать указатель ул OBJ тогда, когда я изменить тэ str i изменить весь элемент, связанный с объектом? – MaGiiK
@MaGiiK, вид. Foreach изменяет эту ссылку, которую захватывает ваше закрытие. –
Хорошо, спасибо, что вы попали в проблему! – MaGiiK