Unity Dropdown 控件用法

1.下拉框创建出来

 你会看见是这个样子的

 

 你想要的肯定不是这个效果, 所以你得修改上面显示的数据

1. 你的数据如果是固定不变你就可以直接在(如下图)修改

 这是不写脚本的修改,当然你也可以脚本修改它

2.直接上代码方法

 void Start()
    {
        AddNames();
        UpdateDropdownView(listNames);
    }

//给下拉框动态添加名字
    private void AddNames()
    {       
        string s4 = "东邪";
        string s5 = "西毒";
        string s6 = "南帝";
        string s7 = "北丐";
        string s8 = "中神通";
        
        listNames.Add(s4);
        listNames.Add(s5);
        listNames.Add(s6);
        listNames.Add(s7);
        listNames.Add(s8);
    }
    //刷新下拉框显示
    private void UpdateDropdownView(List<string> showNames)
    {
        //清空下下拉框数据
        dropdown.options.Clear();
        Dropdown.OptionData tempData;
        for (int i = 0; i < showNames.Count; i++)
        {
            tempData = new Dropdown.OptionData();
            tempData.text = showNames[i];
            dropdown.options.Add(tempData);
        }
        //把第一条数据显示为默认
        dropdown.captionText.text = showNames[0];
    }

上面就是代码动态添加,根据自己需求使用,这只是修改了显示的数据,你肯定也需要绑定事件来触发效果

下面是绑定事件

 void Start()
    {     
       dropdown.onValueChanged.AddListener(Change);      
    }
//给下拉框绑定事件
    private void Change(int index)
    {       
        switch (index)
        {
            case 0:             
                Debug.Log("这是黄老邪");
                break;
            case 1:
                Debug.Log("这是欧阳锋");
                break;
            case 2:
                Debug.Log("这是一灯大师");
                break;
            case 3:
                Debug.Log("这是洪七公");
                break;
            case 4:
                Debug.Log("这是王重阳");
                break;
            default:
                break;
        }     
    }

最后是完整代码,可以运行自行查看效果

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Rodem_rig : MonoBehaviour
{
    public Button exit_btn;   
    public Button queding_btn;
    public Dropdown dropdown;
    public List<string> listNames = new List<string>();
    // Start is called before the first frame update
    void Start()
    {
        AddNames();
        UpdateDropdownView(listNames);
        dropdown.onValueChanged.AddListener(Change);
        exit_btn.onClick.AddListener(delegate
        {
            Destroy_OBJ();
        });

    }
    //给下拉框绑定事件
    private void Change(int index)
    {       
        switch (index)
        {
            case 0:
                //
                Debug.Log("这是黄老邪");
                break;
            case 1:
                Debug.Log("这是欧阳锋");
                break;
            case 2:
                Debug.Log("这是一灯大师");
                break;
            case 3:
                Debug.Log("这是洪七公");
                break;
            case 4:
                Debug.Log("这是王重阳");
                break;
            default:
                break;
        }     
    }
    //给下拉框动态添加名字
    private void AddNames()
    {       
        string s4 = "东邪";
        string s5 = "西毒";
        string s6 = "南帝";
        string s7 = "北丐";
        string s8 = "中神通";
        
        listNames.Add(s4);
        listNames.Add(s5);
        listNames.Add(s6);
        listNames.Add(s7);
        listNames.Add(s8);
    }
    //刷新下拉框显示
    private void UpdateDropdownView(List<string> showNames)
    {
        //清空下下拉框数据
        dropdown.options.Clear();
        Dropdown.OptionData tempData;
        for (int i = 0; i < showNames.Count; i++)
        {
            tempData = new Dropdown.OptionData();
            tempData.text = showNames[i];
            dropdown.options.Add(tempData);
        }
        //把第一条数据显示为默认
        dropdown.captionText.text = showNames[0];
    }
   
    public void Destroy_OBJ()
    {
        Destroy(this.gameObject);
    }
}

 

这是打印效果

 

 按钮触发效果

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Rodem_rig : MonoBehaviour
{
    public Button exit_btn;   
    public Button queding_btn;
    public Dropdown dropdown;
    public List<string> listNames = new List<string>();
    public int RW;
    // Start is called before the first frame update
    void Start()
    {
        AddNames();
        UpdateDropdownView(listNames);
        dropdown.onValueChanged.AddListener(Change);
        exit_btn.onClick.AddListener(delegate
        {
            Destroy_OBJ();
        });
        //确定按钮
        queding_btn.onClick.AddListener(delegate
        {
            GameObjecting.instance.IntoThe_Task(RW);
            Destroy_OBJ();           
        });

    }
    //给下拉框绑定事件
    private void Change(int index)
    {       
        switch (index)
        {
            case 0:
                RW = index;
                break;
            case 1:
                RW = index;
                break;
            case 2:
                RW = index;
                break;
            case 3:
                RW = index;
                break;
            case 4:
                RW = index;
                break;
            case 5:
                RW = index;
                break;
            case 6:
                RW = index;
                break;
            case 7:
                RW = index;
                break;
            case 8:
                RW = index;
                break;
            case 9:
                RW = index;
                break;
            case 10:
                RW = index;
                break;
            case 11:
                RW = index;
                break;
            case 12:
                RW = index;
                break;
            default:
                break;
        }     
    }
    //给下拉框动态添加名字
    private void AddNames()
    {       
        string s4 = "东邪";
        string s5 = "西毒";
        string s6 = "南帝";
        string s7 = "北丐";
        string s8 = "中神通";
        
        listNames.Add(s4);
        listNames.Add(s5);
        listNames.Add(s6);
        listNames.Add(s7);
        listNames.Add(s8);
    }
    //刷新下拉框显示
    private void UpdateDropdownView(List<string> showNames)
    {
        //清空下下拉框数据
        dropdown.options.Clear();
        Dropdown.OptionData tempData;
        for (int i = 0; i < showNames.Count; i++)
        {
            tempData = new Dropdown.OptionData();
            tempData.text = showNames[i];
            dropdown.options.Add(tempData);
        }
        //把第一条数据显示为默认
        dropdown.captionText.text = showNames[0];
    }
   
    public void Destroy_OBJ()
    {
        Destroy(this.gameObject);
    }
}
View Code

 

3.新增一个快速赋值数据的方法

 dropdown.AddOptions(showNames);

就不用写上面的for循环赋值了,代码更简便

其他扩展就看自己需求了

喜欢的话点个赞吧,谢谢 0_0

 

posted @ 2021-05-25 14:19  剑起苍穹  阅读(5482)  评论(0编辑  收藏  举报
/*鼠标点击特效*/