Unity(一)关于Unity Dropdown控件的使用心得

说明:看了一些链接对该控件的一些使用不是很懂,于是自己亲自探索了一下,下面分享自己使用的经验

         

注:以下是详细点的内容。文末有一个快捷使用方法,例如用Dropdown点击后执行某方法,代替UI界面过多的Button,测试使用很方便.

1:首先看一下控件组成

Lable和Arrow是用来显示初始化的文字和勾选项的,Lable会根据首选项的内容自动更改。

Template是Dropdown的模板样式,其中Background和Checkmark的图集资源我们可以提前更改。

2:看一下Dropdown的属性面板

Caption Text和Caption Image是作为下拉列表首选项的文字和图片显示,也是我们每次选择后的内容,因此可代码调用获取

Item Text作为下拉列表中每个item的文字显示,Item Image可以用来扩展模板增加内容

Value值会随着下拉列表选项的不同而变化,参考代码部分

Options选项栏内:通过代码可赋值给相应的Item对象  Dropdown.OptionData

3:下面看下脚本和需要使用的对象

ShowText是每个Item下的Text,用来显示和修改

Sprite自己用来换每个Item的背景显示

4:代码模块

说明:参考他人的代码,并做了修改

public string[] showText;
    public Sprite[] sprite;
    Dropdown dropDownItem;
    List temoNames;
    List sprite_list;
    void Start()
    {
        dropDownItem = this.GetComponent();
        temoNames = new List();
        sprite_list = new List();
        
        AddNames();
        UpdateDropDownItem(temoNames);
        
    }
 
 
    void UpdateDropDownItem(List showNames)
    {
        dropDownItem.options.Clear();
        Dropdown.OptionData temoData;
        for (int i = 0; i         {
            //给每一个option选项赋值
            temoData = new Dropdown.OptionData();
            temoData.text = showNames[i];
            temoData.image = sprite_list[i];
            dropDownItem.options.Add(temoData);
        }
        //初始选项的显示
        dropDownItem.captionText.text = showNames[0];
        
    }
  
 void AddNames()
    {
        for (int i = 0; i         {
            temoNames.Add(showText[i]);
        }
        for (int i = 0; i         {
            sprite_list.Add(sprite[i]);
        }
    }

自己可以在Templete里添加图,这样游戏内的看着好看的下拉列表就完成了。如下

2017总结

----------------------------------------------------------------------------------------

注:2018回头看了看2017的,是有点渣,回头再整理一下。

这里分享一个简单的使用方法:

*x*:实现功能,点选对应的Item后执行某某某函数。例如加载关卡。开发阶段测试使用很方便,省得一大堆的UI button

a:首先创建一个脚本,继承MonoBehavior挂在Dropdown组件下。然后修改继承自Selectable,等下说原因

b:这样当我们选择索引为0的Item,就类似点选了button01然后执行事件,以此类推。这样UI界面干净整洁多了

以上的一个原因说明:经过测试发现,Dropdown继承自Selectable和IPoint接口并且Selectable的基类就是MonoBehavior,但是如果我们把这个脚本挂在其他的GameObject上回发现Log并没有执行。还有就是,如果我们一开始脚本就直接继承Selectable后再挂在其他的交互对象上比如Button或者带有Dropdown的组件上,会弹窗提示已经有一个交互对象了,不让挂

总而言之,功能已经够用了,其他待深入了解测试再说.

推荐大家测试Dropdown里的API方法,获取所需要的数据

PS:欢迎大家交流指导指正问题。


--------------------- 
作者:U龙战于野 
来源:CSDN 
原文:https://blog.csdn.net/linzhonglong/article/details/71195411 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(Unity3d_UGUI)