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); });
}
我有一个 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); });
}