制作下拉菜单(PopupList)
怎样判断是否应当使用下拉菜单
下拉菜单,就是将一系列的选项隐藏,通过单击某一个控件将会弹出一个包含这些选项的列表,在其中选择想要的选项。这样做不但可以节省屏幕空间,也可以让用户在进行选择时更加方便快捷。
下拉菜单本质上还是一个单选框,与Toggle的功能有一些类似,对于下拉菜单玩家必须选择一个选项(有一个默认的初始选项),在同一时间也只能选择一个选项(单选性质)。在游戏开发过程中,如果碰到了以下特点的需求,就可以考虑用下拉菜单了。
(1)有一系列选项需要玩家做出选择,这些选项是有限多的。
(2)这些选项玩家必须选择一个,也只能选择一个。
(3)这些选项如果全部列出来用Toggle制作单选功能会非常占用屏幕空间。
创建下拉菜单
1.第一种方法:使用NGUI做好的下拉菜单预设体。
2.第二种方法:自我拼装。
在Unity顶部菜单,依次选择Create->Sprite,这样就在UI节点下创建了一个Sprite子物体。
在这个子物体身上添加一个PopupList组件,添加方式为,在Inspector面板中依次单击AddComponent->NGUI->Interaction->PopupList。
因为下拉菜单需要单击,所以,还需要为它添加一个BoxCollider组件,添加方法为选中这个空间,在Unity顶部NGUI菜单,以此选择Attach->BoxCollider。
显示当前选中的选项
如果需要显示当前选中的选项,则可以在这个下拉菜单的控件下创建一个Label子物体,创建方法为选中这个下拉菜单的物体,在Untiy顶部NGUI菜单,依次选择Create->Label。
然后需要将这个Label和下拉菜单关联起来,将Label拖动到下拉菜单PopupList组件的On Value Change回调中,选择SetCurrentSelection方法,这样当PopupList的选项被改变时,当前被选中的选项会实时更新到这个被关联的Label上显示出来。
下拉菜单核心组件PopupList
Options
这里是下拉菜单的各个选项录入的地方,识别方式为按行识别,也就是说每填入一个选项后,需要回车行才能继续录入下一个选项。
Default
默认情况下选项中的选项,,这个选项会自动填充为录入的第一个选项。
Position
位置,这里给了3个选项。
Auto:菜单将会自动决定是从上方弹出还是下方弹出。
Above:菜单将会从上方弹出。
Blow:菜单将会从下方弹出。
Aligment
对齐方式,这里和Label里对齐方式一样。
Open on
打开的方式,这里提供了以下的方式可选择。
ClickOrTap:单击出现菜单。
RightClick:右键单击出现菜单。
DoubleClick:双击出现菜单。
Manual:手动出现,这种模式下任何输入都不会出现,必须代码控制它出现。
Localized
这里是指菜单中的文本是否被本地化。
所谓本地化,可以理解为多语言翻译,例如,游戏是英文的,那么游戏中的所有UI文本都将会被转化为英文版本。那么这个Localized选项就是决定这个下拉菜单是否被转换的。
如果打上勾,则表示这个菜单里的选项也会被本地化转化语言。如果不打勾,则表示这些选项里的文本不会被翻译,永远会保持它本来的样子。
Atlas
图集设定。
Atlas:选择图集。
Background:设定下拉菜单的背景的精灵图片,还可以设置颜色。
Highlight:设定下拉菜单出现后,鼠标光标移到选项上高亮显示时显示的图片,也可以设定颜色。
Font
设定菜单文本的字体、字号大小等。
On Value Change
当这个下拉菜单当前选项变化时,触发的事件。
可能会有疑问:为什么这个下拉菜单会单独进行是否本地化和使用Font字体的指定?这是因为大多数游戏在制作上有语言版本时,都会使用下拉菜单来让玩家选择它所认识的语言,着中国情况下选项不能被翻译,使用的字体也可能很特殊需要涵盖很多种语言文字。
制作下拉菜单的注意事项
(1)一定要有接收单击事件的BoxCollider;
(2)填写选项时,一定要注意换行;
(3)如果制作下拉菜单是为了让玩家选择语言,则要更加注意本地化的设置和Font的设置;
(3)