C# 单击其他对象后,下拉列表(模板)不可见

C# 单击其他对象后,下拉列表(模板)不可见,c#,unity3d,dropdown,visible,C#,Unity3d,Dropdown,Visible,范例 我正在使用输入字段过滤或搜索下拉列表项,默认情况下,单击后下拉列表项将不可见。我需要它可见直到选项被选中,衷心感谢:)使用System.Collections; 使用System.Collections.Generic; 使用UnityEngine; 使用UnityEngine.UI; 公共类下拉过滤器:MonoBehavior { [序列化字段] 专用输入字段输入字段; [序列化字段] 私人下拉列表; 私有列表下拉选项; 私有void Start() { dropdownpoptions

范例

我正在使用输入字段过滤或搜索下拉列表项,默认情况下,单击后下拉列表项将不可见。我需要它可见直到选项被选中,衷心感谢:)

使用System.Collections;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共类下拉过滤器:MonoBehavior
{
[序列化字段]
专用输入字段输入字段;
[序列化字段]
私人下拉列表;
私有列表下拉选项;
私有void Start()
{
dropdownpoptions=dropdown.options;
}
公共无效筛选器下拉列表(字符串输入)
{
dropdown.options=dropdownpoptions.FindAll(option=>option.text.IndexOf(input)>=0);
}
}
  • 创建名为DropdownFilter.cs的新脚本复制粘贴 以下脚本

  • 创建输入字段和下拉式UI元素

  • 将脚本附加到所需的游戏对象(场景中的空白或下拉列表,或输入字段,…),您只需确保场景启动时游戏对象已启用

  • 选中保存脚本的游戏对象后,将inputfield拖放到inspector中相应的字段中

  • 在输入字段的OnValueChanged中添加新事件。拖放第5步创建的游戏对象(按住DropdownFilter脚本)并选择FilterDropdown函数(
    DynamicString


  • 然后不要使用下拉菜单,而是实现一个带有按钮的简单面板,您可以实例化和删除按钮,或者动态激活和停用按钮?请参阅并感谢@derHugo,但它有点复杂,现在无法修改,我无法实现我所需的。当单击其他任何内容(例如输入字段)时,它可能仍会自动关闭下拉列表。)另外,我认为使用
    dropdownpoptions.Select(option=>option.text.Contains(input)).ToList()更有效
    
     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.IndexOf(input) >= 0);
        }
    }