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

 

其他擴展就看自己需求了

喜歡的話點個贊吧,謝謝 0_0

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM