c# - Unity - 多个 Dropdown 组件的一个 Dropdown 回调
问题描述
我有一个带有许多下拉控件的 UI,每个控件都会影响数组或项目中的一个。我使用 onValueChanged(int index),每个都连接到自己的侦听器(selected01()、selected02() ... 等)。
这有点乱。最好有一个回调 - selected(Dropdown instance, int index) - 来处理所有这些。回调将从实例参数中识别控件并作用于适当的数组项。
我看不到如何做到这一点- onValueChanged() 仅提供索引而不是源。然而,我确信我已经看到了一个解决方案,可能涉及一个代表,但现在找不到它。
有什么建议么?(这同样适用于任何控件数组,而不仅仅是下拉菜单)。
解决方案
据我所见,无论如何都会返回已更改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); });
}
推荐阅读
- python - 如何在 Python 中解析 JSON 并将 2 个字段放入字典中?
- python - 如何在python中循环列表?
- javascript - 将 Next.js 升级到 v6.0.3 后 Storybook 无法编译
- c++ - “xvalue 有身份”是什么意思?
- batch-file - 如何将多个参数传递给 Windows 批处理文件或批处理函数?
- ruby-on-rails - Rails4多态如何在html页面中使用?
- vba - 使用 VBA 将嵌入的 OLEObject 复制到文件而不打开应用程序
- python - 具有最大和的数组(包含至少一个数字)中的连续子数组
- django - Django 模板标签:在条件标签中使用 forloop.first 标签
- regex - 必须通过剥离符号 ^ 字符的最后一次出现以通过正则表达式提取结束来提取单词的开头