Unity - 多个 Dropdown 组件的一个 Dropdown 回调

Unity - one Dropdown callback for multiple Dropdown components

我有一个 UI,其中包含许多下拉控件,每个控件影响一个数组或项目之一。我使用 onValueChanged(int index),每个都连接到自己的侦听器(selected01()、selected02() ... 等)。

这有点乱。最好有一个回调 - selected(Dropdown instance, int index) - 处理所有这些回调。回调将从实例参数中识别控件并作用于适当的数组项。

我不知道该怎么做 - onValueChanged() 只提供索引而不是源。但是我确信我已经看到了解决方案,可能涉及到一个代表,但现在找不到它。

有什么建议吗? (这同样适用于任何控件数组,而不仅仅是下拉菜单)。

据我所知 onValueChanged 无论如何 returns DropDown 的实例已更改。


可能您使用的版本不同。

您可以简单地创建自己的侦听器方法并执行例如

public DropDown[] dropdowns;

private void HandleChange(DropDown dropdown, int newIndex)
{
    // Your stuff here
}

...

foreach(var dropdown in dropdowns)
{
    var currentDropdown = dropdown;
    currentDropdown.onValueChanged.AddListener((newIndex) => { HandleChange(currentDropdown, newIndex); });
}