Тема: ButtonWrapper
Показать сообщение отдельно
Старый 05.04.2016, 23:17   #3
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений
(для 2,828 пользователей)
Ответ: ButtonWrapper

Сообщение от seaman Посмотреть сообщение
Изучай Closure чтобы таких непоняток не было. Решается просто:
void InitLevelTasks()
{
    
levelChooser = new LevelChooser(imageForLevelTask);
    
Transform root PanelLevelsList;
    foreach (
Transform child in root) {
        
Destroy(child.gameObject);
    }
    
int count 48;
    for (
int k 0count; ++k) {
        var clone = 
GameObject.Instantiate(buttonPrefab);
        clone.
transform.SetParent(root);
        clone.
transform.localScale Vector3.one;

        var 
button = clone.GetComponent<Button>();

        
text button.transform.Find("Text").GetComponent<Text>();
        
text.text ""+k;
        
int j k;
        
UnityAction act = new UnityAction (() => SelectLevel_Start (j));
        
button.onClick.AddListener(act);
    }

Т.е. делаешь временную переменную, которой присваиваешь текущее значение. И уже ее используешь в лямбда выражении
О! Только вчера до этого открытия своим мозгом допёр и тоже именно для гуя докапывался, что бы на генерируемые кнопки вешать события вот такого плана.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.

Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2


Скачать Doom 2D: Remake v0.3.8a
(Offline)
 
Ответить с цитированием