unity dropdown 界面设计

那年仲夏 提交于 2019-12-03 14:23:33

摆界面的时候 遇到这种界面 需要下拉列表框  记录一下经过 使用unity里自带的 dropdown  在Hierarchy界面创建一个Dropdown 这个是基础这里就不多讲了

最终功能:点击下拉列表,出现离开房间,解散房间,游戏设置文字和响应的图标。dropdown设置如下

跟默认的dropdown稍微删掉了一些不用的东西,比如首选项的文字我不需要。Dropdown我不想要背面的白色背景,将他的透明度改为了0,Arrow 是首个图标,选一个你想替换的icon.调节大小,这些自己试试就会了。

主要是这的配置,

Caption Text和Caption Image是作为首选项的文字和图片显示

Item Text和Item Image是作为下拉列表中每个item的文字和图片显示,

Value值会随着下拉列表选项的不同而变化,默认是0,选择下拉列表的第一个,我这里不需要这样,就将他设计成一个不用的数字。

Options里面的第一个框是下拉列表中的文字,第二个是图片。

提示:这里的item Image 使用hierarchy视图里你你创建的item Image。不知道的话看这个博客的第二张图上能找到。这是一种通过摆界面的方式实现的。下面我们说一下通过代码实现,参考别人的。

 public string[] showText;
    public Sprite[] sprite;
    Dropdown dropDownItem;
    List<string> temoNames;
    List<Sprite> sprite_list;
    void Start()
    {
        dropDownItem = this.GetComponent<Dropdown>();
        temoNames = new List<string>();
        sprite_list = new List<Sprite>();


        AddNames();
        UpdateDropDownItem(temoNames);


    }
    void UpdateDropDownItem(List<string> showNames)
    {
        dropDownItem.options.Clear();
        Dropdown.OptionData temoData;
        for (int i = 0; i < showNames.Count; i++)
        {
            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 < showText.Length; i++)
        {
            temoNames.Add(showText[i]);
        }
        for (int i = 0; i < sprite.Length; i++)
        {
            sprite_list.Add(sprite[i]);
        }
    }
}


dropDownItem.value == 0 判断选择的下拉列表框。

mydrop.value返回的是当前值所在list中的位置,位置是从0开始算起的。

dropdownItem.options.Clear(); 清空数据
dropdownItem.options.Add(tempData); 添加数据
dropdown.addoptions(“放入要显示的list数据”)方法显示要显示的内容
mydrop.options.RemoveAt(“要移除的数据”)方法 来移除当前选中的内容
mydrop.options[0].text; 获取第一个下拉列表框的文本内容






易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!