Unity模糊搜索

1.创建UI,InputField、SCroll View

 

 2.在BG上绑定脚本Post

复制代码
 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 using UnityEngine.UI;
 5 namespace ElectricPower.WindPower
 6 {
 7     public class Post : MonoBehaviour
 8     {
 9         public RectTransform content;//可以滑动区域
10         public GameObject partPrefab;//零件UI预制体
11         public InputField PartName_InputField;//零件名字输入框
12         public string[] PartNames = new string[10];
13         public int Number;//搜索到对应内容的计数   
14         public List<string> matchSuccessName = null;//存储匹配到的名字字符串
15 
16         private void Start()
17         {
18           
19         }
20 
21         //匹配搜索字符串名字(Select_Btn按钮绑定该方法
22         public void MatchStringName()
23         {
24             if (PartName_InputField.text =="")
25             {
26                 Debug.Log("输入内容为空!!!");
27                 return;
28             }
29             else
30             {
31                 Number = 0;//重置搜索到对应内容的计数          
32                 DestoryGo();//销毁预制体
33                 string t2 = PartName_InputField.text;//输入内容
34                 foreach (var name in PartNames)
35                 {
36                     if (name.Contains(t2))
37                     {
38                         Number++;
39                         matchSuccessName.Add(name);
40                         Debug.Log("matchSuccessName" + matchSuccessName.Count);
41                     }
42                 }
43                 StartCoroutine(ShowUI(Number));
44             }          
45         }
46 
47         //根据搜索出来的对应内容显示UI
48         IEnumerator ShowUI(int num)
49         {
50             yield return new WaitForSeconds(1.0f);
51             float contentheight = num * 55;//可以拖拽对象height值
52             content.GetComponent<RectTransform>().sizeDelta = new Vector2(255, contentheight); //赋值给可以拖拽对象
53             GameObject[] go = new GameObject[num];
54             for (int i = 0; i < num; i++)
55             {
56                 go[i] = Instantiate(partPrefab, content);//事例对象,content为他们父对象
57                 go[i].transform.GetChild(0).GetComponent<Text>().text = matchSuccessName[i];
58             }
59         }
60 
61         //销毁上次生成的UI内容
62         public void DestoryGo()
63         {
64             GameObject go_1 = content.gameObject;
65             matchSuccessName.Clear();//清除数组内容
66             if (go_1.transform.childCount > 0)
67             {
68                 Transform[] goTransform = new Transform[go_1.transform.childCount];
69                 int index = 0;
70                 foreach (Transform child in go_1.transform)
71                 {
72                     goTransform[index] = child;
73                     index++;
74                 }
75                 for (int i = 0; i < goTransform.Length; i++)
76                 {
77                     Destroy(goTransform[i].gameObject);
78                 }
79             }
80         }
81     }
82 }
复制代码

3.效果展示如图

输入01,相关的数据显示出来

 

 

posted @   一路繁华的夏ˇ  阅读(1106)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示