Обработка метода OnClick в Unity несколько раз в панели кнопок
Дорогие гуру Unity game разработчики нужна помощь начинающему )) В Unity в 2d есть панель из 4 кнопок, по нажатию которых я меняю текст другого компонента. И все работало. Но понадобилось брать текст еще одного компонента и менять его на нужный. Столкнулся что по нажатию на кнопку метод обрабатывает 3 раза. Подскажите люди добрые в чем косяк и как его исправить. За ранее спасибо.
Код:
public class PlusPercentWin : MonoBehaviour
{
public Text Name1;
public Text Amount1;
public Button button1;
public Button button2;
public Button button3;
public Button button4;
private int basename=100;
int y = 0;
void OnEnable()
{
button1.onClick.AddListener(() => ButtonCallBack1());
//button2.onClick.AddListener(() => ButtonCallBack2()); остальные кнопки по аналогии
//button3.onClick.AddListener(() => ButtonCallBack3());
//button4.onClick.AddListener(() => ButtonCallBack4());
}
private void ButtonCallBack1() {
int b1;
b1 = int.Parse(Amount1.text.ToString()); // беру из второго объекта значение текста (оно всегда целое число)
b1 +=1;
string str = b1.ToString();
Amount1.text = str; // возвращаю обработанное значение - в тексте объекта выводит значение +3, вместо +1.
y++; // для интереса добавил посмотреть что будет в логе
Debug.Log(y); // в логе выводит y+1 но 3 раза
basename += 1;
Name1.text = basename + " worlrd"; // первый объект - записывает в текст корректное значение +1. в логе тоже выводит корректно но 3 раза.
}
Фактически вопрос сводится к тому - как корректно вынять значение из текста - обработать по нажатию кнопки и вернуть обратно обработанный. Т.к. в данном случае что-то идет не так. Для примера - есть отдельно компонент Текст, компонент Input Field и кнопка - и там все работает гуд. Беру значение из Текст ( Text.GetComponent().text.ToString() ), значение из инпута кнопкой обрабатываю (OnClick) - все четенько. А тут не хочет.
Ответы (1 шт):
btn.onClick.AddListener(() => met()); как-то криво работаю, сам сталкивался с косяками.
// функция события указывается в инспекторе кнопки OnClick
// с указанием аргумета для каждой кнопки 0, 1, 2, 3.
public void PlayerChoise (int index)
{
}