программно обрабатывать событие кнопки ngui в единстве

Я перехожу с пользовательского интерфейса Unity на NGUI.

Раньше я мог добавить слушателей к кнопке с помощью следующих скриптов:

button.GetComponentInChildren<Button>().onClick.AddListener(() =>
{
    //codes that could be triggered by click the button. 
});

Но при переходе на NGUI я не могу заставить его работать:

EventDelegate.Set(go.GetComponent<UIButton>().onClick, OnButtonClickActive);

private void OnButtonClickActive()
{
   Debug.Log("active button clicked");
}

person armnotstrong    schedule 06.06.2017    source источник
comment
что такое ошибка времени компиляции?   -  person kennyzx    schedule 06.06.2017
comment
@kennyzx ошибок не было. просто не работает.   -  person armnotstrong    schedule 06.06.2017


Ответы (1)


Наконец, я сделал эту работу, добавив пользовательское событие в OnClick с помощью следующего скрипта (используя UIEventListener):

UIEventListener.Get(go).onClick += OnButtonClickActive;

И обработчик события определяется следующим образом:

private void OnButtonClickActive(GameObject go)
    {
        int level;
        int.TryParse(go.GetComponentInChildren<UILabel>().text, out level);
        Debug.Log(level + "active button clicked");
        ApplicationModel.CurrentLevel = ApplicationModel.Levels[level - 1];
        SceneManager.LoadScene("PlayScene");
    }

Обратите внимание, что может быть немного глупо передавать параметр (информацию об уровне) с компонентом UILable в игровом объекте. Если есть другой более элегантный способ, пожалуйста, дайте мне знать.

person armnotstrong    schedule 06.06.2017