今天我们来了解一下ngui插件中的UIPopupList 列表。看看它都有哪些用处。

 概览

       附加一个UIPopupList脚本到一个button将让你能通过他获得一个选项列表。

NGUI UIPopupList 列表

       想创建一个组件,当你点击一个按钮,然后他会弹出一些选项让你选择,首先增加一个UIPopupList脚本给它,并制定Atlas和Font选项。你也可以选择一个sprite用于列表Background和Hightlight。Background是列表项的背景,Hightlight用于前景表示当前选中的选项。
        为了对你的Popup List指定不同的选项,简单在Option框里面输入选项名字即可。它是一个多行文本框,你增加的每一行将创建一个新的列表项实体。所以如果你想有三个不同选项“First”,“Second”和“Third”——你只要像下面这样输入就可以了:
[csharp] view plaincopy在CODE上查看代码片派生到我的代码片
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方法即可。

NGUI UIPopupList 列表

       想通过代码改变监听器,可以使用EventDelegate.Add方法:
[csharp] 
EventDelegate.Add(popupList.onChange, YourFunction);
这里假设你的方法名叫YourFunction:
[csharp] view plaincopy在CODE上查看代码片派生到我的代码片
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