Вы можете добавить делегата для кнопки, чтобы вызывать ее при нажатии.
Пример:
private void Awake()
{
Button buttonComponent = GetComponent<Button>();
buttonComponent.onClick.AddListener(OnButtonClicked)
}
private void OnButtonClicked()
{
Debug.Log("The button has clicked!");
}
Вы должны прикрепить этот скрипт к своему игровому объекту Button.
Также вы можете добавить функцию события прямо к вашей кнопке напрямую через инспектор, но функция должна быть public
, чтобы инспектор мог получить к ней доступ. Если вы не хотите, чтобы ваша функция была видна другим классам, то лучшим выбором будет приведенное выше.
В вашем случае вот мое предложение:
[SerializeField]
private Button buttonE, buttonR;
private ComboInput input;
private void Awake()
{
buttonE.onClick.AddListener(OnButtonClicked_E);
buttonR.onClick.AddListener(OnButtonClicked_R);
}
private void OnButtonClicked_E()
{
input = new ComboInput(AttackType.heavy);
}
private void OnButtonClicked_R()
{
input = new ComboInput(AttackType.light);
}
РЕДАКТИРОВАТЬ: если вы хотите отредактировать существующий боевой сценарий (а не создавать новый отдельный компонент), тогда вам нужно передать свои кнопки своему боевому сценарию. Это buttonE, buttonR
, ссылку на который нужно передать через инспектор единства. Если это произошло, вы можете удалить свою функцию Update()
, если с ней не связано никаких других вещей.