Зависит от того, где находится кнопка. Обычно кнопки сгруппированы на панели. Например, есть панель меню паузы с кнопками (например, кнопки сохранения, перезапуска игры) и меню настроек с кнопками. Вы сгруппируете эти кнопки с другими объектами пользовательского интерфейса под панелью, основываясь на их действиях и когда они должны быть видны.
Вам не нужен новый скрипт для каждой кнопки. Вам нужен новый скрипт для каждой сцены или панели меню. Итак, каждая сцена, меню или панель могут иметь скрипт, который обрабатывает их кнопки.
Вы можете иметь переменные общедоступных кнопок, а затем использовать событие onClick
, чтобы подписаться на их события нажатия для кнопок, которые находятся на той же панели или в меню.
Вы можете добавить функцию для каждой кнопки:
public Button button1;
public Button button2;
public Button button3;
public Button button4;
void OnEnable()
{
//Register Button Events
button1.onClick.AddListener(() => buttonCallBack1());
button2.onClick.AddListener(() => buttonCallBack2());
button3.onClick.AddListener(() => buttonCallBack3());
button4.onClick.AddListener(() => buttonCallBack4());
}
private void buttonCallBack1() { }
private void buttonCallBack2() { }
private void buttonCallBack3() { }
private void buttonCallBack4() { }
Или используйте одну функцию для всех из них, а затем используйте оператор if
для обработки каждой отдельной кнопки. Если кнопки - это одна и та же панель, я обычно использую одну функцию для группировки и обработки их кликов, как показано ниже:
public Button button1;
public Button button2;
public Button button3;
public Button button4;
void OnEnable()
{
//Register Button Events
button1.onClick.AddListener(() => buttonCallBack(button1));
button2.onClick.AddListener(() => buttonCallBack(button2));
button3.onClick.AddListener(() => buttonCallBack(button3));
button4.onClick.AddListener(() => buttonCallBack(button4));
}
private void buttonCallBack(Button buttonPressed)
{
if (buttonPressed == button1)
{
//Your code for button 1
Debug.Log("Clicked: " + button1.name);
}
if (buttonPressed == button2)
{
//Your code for button 2
Debug.Log("Clicked: " + button2.name);
}
if (buttonPressed == button3)
{
//Your code for button 3
Debug.Log("Clicked: " + button3.name);
}
if (buttonPressed == button4)
{
//Your code for button 4
Debug.Log("Clicked: " + button4.name);
}
}