注意:本文翻译时NGUI版本已经更新到3.0.7
原文地址:http://www.tasharen.com/forum/index.php?topic=6751.0
概览
附加一个UIPopupList脚本到一个button将让你能通过他获得一个选项列表。
想创建一个组件,当你点击一个按钮,然后他会弹出一些选项让你选择,首先增加一个UIPopupList脚本给它,并制定Atlas和Font选项。你也可以选择一个sprite用于列表Background和Hightlight。Background是列表项的背景,Hightlight用于前景表示当前选中的选项。
为了对你的Popup List指定不同的选项,简单在Option框里面输入选项名字即可。它是一个多行文本框,你增加的每一行将创建一个新的列表项实体。所以如果你想有三个不同选项“First”,“Second”和“Third”——你只要像下面这样输入就可以了:
First
Second
Third
Font选项定义了popuplist用于创建label的字体。在上面的图片,first,second和third将使用inspector制定的“Arimo20”字体创建。根据字体使用类型(bitmap或dynamic),你将可能可以修改字体大小(如果使用dynamic字体的话)。你还可以调节字体颜色,字体间距等。
如果你不想popuplist以动画形式出现,只要简单去掉Animated选项就可以了。
如果你想要text选项根据Localization System自动本地化,你可以勾选“Localized”复选框。
在OnValueChange部分,你能指定一个方法,它会在popuplist选择的时候被调用。如果你已经在某个地方增加了label,你只要简单引用它的SetCurrentSelection方法,那么label的值将显示popup list的选择。想这样做,你只要把Label游戏对象拖到Notify域并从下拉列表中选择UILabel.SetCurrentSelection方法即可。
想通过代码改变监听器,可以使用EventDelegate.Add方法:
EventDelegate.Add(popupList.onChange, YourFunction);
这里假设你的方法名叫YourFunction:
void YourFunction ()
{
Debug.Log("Selection: " + UIPopupList.current.value);
}
Pro-Tip
为了制作更实用的下拉列表,在OnValueChange域引用按钮的label,并选择它的UILabel.SetCurrentSelection方法。这样将在当你从列表中选择选项的时候自动更新它的内容。
类文档
http://tasharen.com/ngui/docs/class_u_i_popup_list.html
如果你有一些和这个组件相关的问题,也可以在下面讨论。