【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| UnityDropdown

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

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

[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属性就可以得到文本了。

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

 

 

 

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

 

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

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

 

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

 

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

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

[code]phpcode:

    public Dropdown dropdown;

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

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

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

下面简单说下这个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中,给Dropdown添加一个选项需要使用UI系统中的Dropdown组件。首先确保你已经有一个带Dropdown组件的GameObject,如果没有,你需要先创建一个。然后,你可以使用以下步骤来添加一个新选项: 1. 在Unity编辑器中,找到包含Dropdown组件的GameObject。 2. 在Inspector窗口中,选择Dropdown组件。 3. 在Dropdown组件的属性区域中,你会看到一个名为“Options”的列表框,这用于管理所有的选项。 4. 在“Options”列表框中,点击“+”按钮添加新的选项。 5. 每个选项通常包含一个“Text”字段和一个“Value”字段,你可以输入选项显示的文本到“Text”字段中,如果需要的话,还可以设置一个对应的到“Value”字段中。 6. 添加选项后,你可以调整“Options”列表中的顺序来改变下拉菜单中选项的显示顺序。 这些步骤适用于在Unity编辑器中手动操作添加选项。如果你需要在代码中动态添加选项,则可以使用以下代码示例: ```csharp using UnityEngine; using UnityEngine.UI; public class DropdownExample : MonoBehaviour { void Start() { // 获取Dropdown组件 Dropdown dropdown = GetComponent<Dropdown>(); // 创建一个新的OptionData对象 Dropdown.OptionData option = new Dropdown.OptionData("新选项"); // 将新选项添加Dropdown选项列表中 dropdown.options.Add(option); } } ``` 这段代码展示了如何在脚本中通过编程方式为Dropdown添加一个新选项
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值