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

C# 如何告诉在Unity中调用它的事件处理程序方法,c#,unity3d,C#,Unity3d,对于多个下拉列表,我希望使用与事件处理程序相同的方法。为了使部分方法能够工作,他们必须知道谁调用了它们——下拉列表的名称或它存储为第一个值的标题。我知道我可以为这些下拉列表中的每一个创建一个单独的方法,但这似乎太过分了。有没有一种方法可以按照 OnClick(int indexSelected, string dropdownTitle) ? 我想对多个事件使用与事件处理程序相同的方法 下拉列表 您可以在委托的帮助下,将下拉列表实例作为参数传递,然后根据实例、名称或您喜欢的任何属性比较它是哪一

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

OnClick(int indexSelected, string dropdownTitle)
?

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

您可以在
委托
的帮助下,将
下拉列表
实例作为参数传递,然后根据实例、名称或您喜欢的任何属性比较它是哪一个

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;
    }
}