我有一个UI,里面有很多下拉控件,每个控件都会影响一个数组或项目中的一个。我使用onValueChanged(int index),每个控件都有自己的监听器(selected01(),selected02()......等等)。
这有点乱。最好是有一个回调--selected(Dropdown实例,int index)--来处理所有的回调。回调将从实例参数中识别出控件,并对相应的数组项进行操作。
我不知道如何做到这一点--onValueChanged()只提供了一个索引而不是源。然而,我确信我已经看到了一个解决方案,可能涉及到一个Delegate,但现在找不到它。
有什么建议吗?(同样的情况也可以适用于任何控件数组,而不仅仅是Dropdowns)。
据我所知 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); });
}