如何告诉在Unity中调用它的事件处理程序方法

时间:2017-06-30 23:42:51

标签: c# unity3d

我想使用相同的方法作为多个下拉列表的事件处理程序。为了使方法的一部分工作,他们必须知道谁调用了它们 - 下拉列表的名称或它存储的标题作为其第一个值。我知道我可以为这些下拉列表中的每一个创建一个单独的方法,但这似乎过多了。有没有办法按照

的方式做点什么
OnClick(int indexSelected, string dropdownTitle)

1 个答案:

答案 0 :(得分:1)

  

我想使用与多个事件处理程序相同的方法   下拉列表。

您可以在Dropdown的帮助下将delegate实例作为参数传递,然后根据实例,名称或您喜欢的属性来比较它。

public Dropdown dropdown;

Dropdown otherDropDown;
void OnEnable()
{
    //Register to onValueChanged Events
    dropdown.onValueChanged.AddListener(delegate { callBack(dropdown); });
}

void OnDisable()
{
    //Un-Register from onValueChanged Events
    dropdown.onValueChanged.RemoveAllListeners();
}

void callBack(Dropdown currentDropdown)
{
    //Compare dropdown by instance?
    if (currentDropdown == otherDropDown)
    {
        int value = currentDropdown.value;
    }

    //Compare dropdown by name
    if (currentDropdown.name == "YourDPName")
    {
        int value = currentDropdown.value;
    }
}