Unity C#可搜索Dropdown过滤:需保留“-”选项的优化需求
Unity Dropdown过滤优化:始终保留“-”选项
直接修改FilterDropdown方法的过滤条件,让“-”选项始终被保留,同时保留匹配输入内容的选项即可。以下是优化后的完整代码:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class DropdownFilter : MonoBehaviour { [SerializeField] private InputField inputField; [SerializeField] private Dropdown dropdown; private List<Dropdown.OptionData> dropdownOptions; private void Start() { dropdownOptions = dropdown.options; } public void FilterDropdown(string input) { // 保留“-”选项 + 包含输入内容的选项 dropdown.options = dropdownOptions.FindAll(option => option.text == "-" || option.text.IndexOf(input) >= 0); // 如果需要忽略大小写匹配,替换为下面的条件: // option.text == "-" || option.text.IndexOf(input, StringComparison.OrdinalIgnoreCase) >= 0 } }
关键修改说明
- 在
FindAll的筛选委托中,新增option.text == "-"的判断,确保无论输入什么内容,该选项都会被保留 - 原有的匹配逻辑保持不变,依然会筛选出包含输入文本的选项
- 如果需要支持大小写不敏感的匹配,可以将
IndexOf(input)替换为IndexOf(input, StringComparison.OrdinalIgnoreCase),这样输入“ba”也能匹配“Ban”“Bay”这类选项
内容的提问来源于stack exchange,提问作者Leonel Chailand
相关产品推荐
相关产品推荐

