首页 > 解决方案 > Unity - 多个 Dropdown 组件的一个 Dropdown 回调

问题描述

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

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

我看不到如何做到这一点- onValueChanged() 仅提供索引而不是源。然而,我确信我已经看到了一个解决方案,可能涉及一个代表,但现在找不到它。

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

标签: c#unity3ddropdown

解决方案


据我所见,无论如何都会返回已更改onValueChanged的实例。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); });
}

推荐阅读