Unity--一个Dropdown回调用于多个Dropdown组件。

问题描述 投票:0回答:1

我有一个UI,里面有很多下拉控件,每个控件都会影响一个数组或项目中的一个。我使用onValueChanged(int index),每个控件都有自己的监听器(selected01(),selected02()......等等)。

这有点乱。最好是有一个回调--selected(Dropdown实例,int index)--来处理所有的回调。回调将从实例参数中识别出控件,并对相应的数组项进行操作。

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

有什么建议吗?(同样的情况也可以适用于任何控件数组,而不仅仅是Dropdowns)。

c# unity3d dropdown
1个回答
1
投票

据我所知 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); });
}
© www.soinside.com 2019 - 2024. All rights reserved.