【Unity】Dropdown下拉按钮的一些基本操作 获取值与添加选项

自己的老帖子,移植过来

原地址:

http://www.manew.com/home.php?mod=space&uid=95681&do=blog&view=me&from=space

 

Unity 5 Dropdown下拉按钮的一些基本操作

热度 7  2364 2015-11-23 20:24 |个人分类:UGUI| Unity, Dropdown

对于Unity 5.1 之前UGUI一直没有自带下拉列表这一点,楼主表示很蛋疼,插件什么的用着也不舒服,总感觉不如系统自带的好,前一段时间5.2.2更新,终于出了下拉列表,但楼主表示它用起来并没有那么简单,就最基本的获取当前选择项的文本来说,就不是一句“.value”能搞定的,那么下面我就先说下,如何获取当前选择的年文本,

【Unity】Dropdown下拉按钮的一些基本操作 获取值与添加选项_第1张图片

废话少说,先上代码(其实也就一句话)

[code]phpcode:

    public Dropdown dropdown;
    public Text text;

    public void OnValueChanged() {
        text.text = dropdown.options[dropdown.value].text;
    }

下面我简单说下为什么这样写,

这句dropdown.value可以获取当前选择项的序号,从第一项开始是0,1,2...

而dropdown.options是一个数组,

摘要: 

        //     The list of possible options. A text string and an image can be specified

        //     for each option.

上面摘要是API里对它的解释,本人理解它就是保存所有所有下拉列表选项的一个数组。

那么接下来dropdown.options[dropdown.value]就可以获取数组里当前选择的那一项,它是OptionData类型的,访问其text属性就可以得到文本了。

【Unity】Dropdown下拉按钮的一些基本操作 获取值与添加选项_第2张图片

运行结果,更改下拉框,右侧文本会随着改变。

 

 

 

允许我发泄下,刚刚写好的更新内容,因为验证码写错全木有了,容我哭会再回来重写。。。。

 

好了,哭完了,,今天说下用代码增加下拉按钮的内容吧

刚刚研究了很久,发现dropdown这个后来的控件真的很坑啊。。。找了一上午资料得到了如下结论:

 

dropdown(下拉按钮),想要动态控制它,我发现直接给它字符串不行,那么就要新建optionitem,之后我新建可optionitem发现不能把它加在dropdown的add方法中,因为无法为该item赋值,好,那我再找别的方法,我查Unity的API(一个Unity的官方文档,查看所有程序接口的),发现dropdown有方法“CreateItem”,那我现在要用它却发现它是,protect的(这代表,不允许随意使用),好我又找怎么访问protect的方法,百度告诉我,它的子类和友元函数可以实现访问,好!子类是肯定不是了,那么友元函数呢,我查了下,百度告诉我c#没有友元函数,,,我表示,,,

 

好吧,不管它了,吃了顿饭回来我突然发现了这个,,,

【Unity】Dropdown下拉按钮的一些基本操作 获取值与添加选项_第3张图片

我去,该换眼镜了我,,,呵呵。好了不废话了,下面上代码(还是就两句话)

[code]phpcode:

    public Dropdown dropdown;

    List inside=new List{"sdadsa","123daq","点卡和万科","!@^&@#","adw&^h科技"};

    void Start() {
        dropdown.AddOptions(inside);
    }

运行结果一定是你们想要的啦。。。

【Unity】Dropdown下拉按钮的一些基本操作 获取值与添加选项_第4张图片

下面简单说下这个AddOption方法,它有三个重载,分别是可以传入的不同参数,(但都是泛型数组List)

第一种是string类型的list,就是我用的,不用多说啦

第二种是sprite类型的,第三种是dropdown.option类型的,

好啦,我在发现什么坑再来填吧,,,

 

回来看看,顺便补几句如何设置DropDown的UI部分吧

1.控件外观直接给个图片或颜色即可,直接拖拽就可以改变尺寸

2.对于下拉出来的内容,若调节每个子项的背景,在Template下最底层,Item Background给颜色或背景图即可

3.下拉出来内容的背景颜色,更改Template上的Image的背景图或颜色即可(即补上下的白边)

4.改变下拉内容子项的尺寸

直接更改Template下Item(以及其内容)的尺寸即可,

PS:这次没配图,亲自试一下便知

 

 

===20200414===

想要实现一个类似按钮Invoke的那种,调用按钮OnClick的Invoke,就会模拟点击按钮的需求,

要用代码调用Dropdown并改变状态,而且会通知其绑定的OnValueChange事件。

非常简单,

直接dropdown.value=某int值即可。它会根据你给的值,调用已经绑定的OnValueChange事件

dp.value = 2;

若只想修改值,而不需要调用OnValueChange事件,需要调用如下方法

if (Input.GetKeyDown(KeyCode.Space)) {
     dp.SetValueWithoutNotify(2);
}

 

 

 

 

你可能感兴趣的:(Unity,UGUI)