Unity-DropDown的搜索功能實現

1. 需要創建一個DropDown和inputFeild對象,UI的放置如下:(將inputFeild放置在dropdown的上方)

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


public class Test1: MonoBehaviour {

    public InputField inputText;//該輸入框放置在DropDown處
    public Dropdown dropDownList;
    List<string> strList;
    List<Dropdown.OptionData> options = new List<Dropdown.OptionData>();//這是用來存Dropdown.OptionData的中間變量
    // Use this for initialization
    void Start () {
        //strList內的內容設置好後就不要再進行改動了
        strList = new List<string>();
        strList.Add("北京");
        strList.Add("上海");
        strList.Add("深圳");
        strList.Add("廣州");
        strList.Add("內蒙古");
        strList.Add("蒙古大草原");
        options.Add(new Dropdown.OptionData("請選擇所在地區"));
        foreach (string s in strList)
        {
            options.Add(new Dropdown.OptionData(s));

        }
        dropDownList.GetComponent<Dropdown>().options = options;
    }
    void Update()
    {
    }
    //這個函數放在inputFeild的OnEndEdit事件下
    public void onValueChange()
    {
        //使用LINQ進行查詢
        var results = from temp in strList where (temp.Contains(inputText.text)) select temp;
            options.Clear();
            foreach (string s in results)
            {
                //Debug.Log(s);
                options.Add(new Dropdown.OptionData(s));
                dropDownList.GetComponent<Dropdown>().options = options;
            }
            dropDownList.Show();

    }
//這個函數放在DropDown的OnValueChange事件下
    public void DropDownOnValueChange()
    {
        inputText.text = dropDownList.transform.GetChild(0).GetComponent<Text>().text;
        options.Clear();
        foreach (string s in strList)
        {
            options.Add(new Dropdown.OptionData(s));

        }
        dropDownList.GetComponent<Dropdown>().options = options;

    }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章