using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using UnityEngine.UI; using DG.Tweening; using UnityEngine.EventSystems; public class SearchName1 : MonoBehaviour { public GameObject TZ; public GameObject scrollView; public Transform scrollViewContent; public TMP_InputField inputField; public TextMeshProUGUI searchText; /// /// 搜索文本框预制体 /// public Button prefabsText; /// /// 搜索按钮 /// public Button serarchBtn; public DragController dragController; [Header("加入需要搜索的设备名称")] public List objs = new List(); public List SearchObjects = new List(); public SearchData searchData; public List devices = new List(); public float initialHeight; public RectTransform rectTransform; private void Awake() { rectTransform = scrollView.GetComponent(); initialHeight = rectTransform.sizeDelta.y; rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, 0); gameObject.SetActive(false); } void Start() { //scrollView.SetActive(false); InputFieldEvent(); dragController.gameObject.SetActive(false); OnClickSearchBtn(); } void InputFieldEvent() { inputField.onValueChanged.AddListener(a => { if (a != "") { //scrollView.SetActive(true); Serach(a); } //else scrollView.SetActive(false); }); } void Serach(string strName) { SearchObjects.Clear(); devices.Clear(); devices = searchData.FuzzySearch(strName); for (int i = 0; i < scrollViewContent.childCount; i++) { Destroy(scrollViewContent.GetChild(i).gameObject); } for (int i = 0; i < devices.Count; i++) { for (int j = 0; j < objs.Count; j++) { if (devices[i].ID.Equals(objs[j].name)) { SearchObjects.Add(objs[j]); } } } for (int i = 0; i < devices.Count; i++) { int index = i; Button tmp = Instantiate(prefabsText, scrollViewContent, false); TextMeshProUGUI text = tmp.transform.GetChild(0).GetComponent(); text.text = devices[index].ID + devices[index].deviceType + devices[index].deviceNum; tmp.onClick.AddListener(() => { dragController.oriObjectPrefab = SearchObjects[index].GetComponent(); dragController.gameObject.SetActive(true); dragController._icon.sprite = SearchObjects[index].GetComponent().selfIcon; dragController._icon.SetNativeSize(); }); } } //TODO:有问题 void OnClickSearchBtn() { serarchBtn.onClick.AddListener(() => { show_menu(); return; if (searchText.text != "") { scrollView.SetActive(true); Serach(searchText.text.Trim()); } }); } private void Update() { } /// /// 隐藏搜索菜单 /// public void hide_menu() { //if (rectTransform.sizeDelta.y >= 0) { DOTween.Kill(rectTransform, false); TZ.SetActive(false); float targetHeight = 0; float duration = 1f; rectTransform.DOSizeDelta(new Vector2(rectTransform.sizeDelta.x, targetHeight), duration).OnComplete(() => { scrollView.SetActive(false); }); } } /// /// 显示搜索菜单 /// public void show_menu() { //if (rectTransform.sizeDelta.y != initialHeight) { DOTween.Kill(rectTransform, false); scrollView.SetActive(true); float targetHeight = initialHeight; float duration = 1f; rectTransform.DOSizeDelta(new Vector2(rectTransform.sizeDelta.x, targetHeight), duration).OnComplete(() => { TZ.SetActive(true); }); } } }