Unity Dropdown(可编辑,可输入)下拉选择框,带文本联想

这篇具有很好参考价值的文章主要介绍了Unity Dropdown(可编辑,可输入)下拉选择框,带文本联想。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity Dropdown(可编辑,可输入)下拉选择框,带文本联想

前 言

由于 Unity 没有直接实现该效果的组件,所以以上效果是用Dropdown和InputField这个两个组件 组合实现的。

UI布局

Unity Dropdown(可编辑,可输入)下拉选择框,带文本联想
核心代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SearchBar : MonoBehaviour
{
    public Dropdown dropdown;

    public InputField inputField;
    /// <summary>
    /// 下拉列表的默认 初始数据列表
    /// </summary>
    public List<string> LibraryList = new List<string>();
    /// <summary>
    /// 搜索后 返回的数据列表
    /// </summary>
    private List<string> ResultList = new List<string>();

    private void Start()
    {
        Init();
        InitDropDown();
        dropdown.onValueChanged.AddListener(delegate
        {
            Debug.Log(dropdown.transform.Find("Label").GetComponent<Text>().text);
            inputField.text = dropdown.transform.Find("Label").GetComponent<Text>().text;
            HideInputField();
        });
        inputField.onEndEdit.AddListener(delegate 
        {
            Filter();
            ShowResult();
        });
    }
    private void Update()
    {
        if (inputField.isFocused && inputField.placeholder.gameObject.activeSelf == false)
        {
            ShowInputField();
        }
    }
    private void Init()
    {
        LibraryList.ForEach(i => ResultList.Add(i));//括号内是一个lambda表达式,i所代表的是LibraryList集合中的一个元素
        SetPlaceholder("请输入...");
    }
    /// <summary>
    /// 初始化 下拉列表
    /// </summary>
    private void InitDropDown() 
    {
        dropdown.ClearOptions();//清空
        dropdown.options.Add(new Dropdown.OptionData());
        foreach (var item in LibraryList)
        {
            Dropdown.OptionData optionData = new Dropdown.OptionData();
            optionData.text = item;
            dropdown.options.Add(optionData);
        }
       
    }

    private void HideInputField() 
    {
        inputField.GetComponent<Image>().color = new Color(1,1,1,0);
        inputField.placeholder.gameObject.SetActive(false);
        inputField.textComponent.gameObject.SetActive(false);
    }

    private void ShowInputField() 
    {
        inputField.GetComponent<Image>().color = new Color(1,1,1,1);
        inputField.placeholder.gameObject.SetActive(true);
        inputField.textComponent.gameObject.SetActive(true);
    }
    /// <summary>
    /// 设置默认显示文字
    /// </summary>
    /// <param name="str"></param>
    public void SetPlaceholder(string str)
    {
        inputField.placeholder.GetComponent<Text>().text = str;
    }
    /// <summary>
    /// 设置下拉列表的默认数据
    /// </summary>
    /// <param name="_list"></param>
    public void SetLibraryList(List<string> _list)
    {
        LibraryList = _list;
    }
    /// <summary>
    /// 筛选字符
    /// </summary>
    private void Filter()
    {
        ResultList = TextLenovo(inputField.textComponent.text, LibraryList);
    }
    /// <summary>
    /// 显示搜索结果
    /// </summary>
    private void ShowResult()
    {
        dropdown.ClearOptions();
        dropdown.AddOptions(ResultList);
        if (ResultList.Count != 0)
        {
            dropdown.Show();
        }
    }
    /// <summary>
    /// 文本联想
    /// </summary>
    /// <param 传入的字符="text_item"></param>
    /// <param 库数组="TextLibraryList"></param>
    /// <param 返回结果数组="temp_list"></param>
    /// <returns></returns>
    public List<string> TextLenovo(string text_item, List<string> TextLibraryList)
    {
        List<string> temp_list = new List<string>();
        foreach (string item in TextLibraryList)
        {
            if (item.Contains(text_item))
            {
                temp_list.Add(item);
            }
        }
        return temp_list;
    }
}

项目Doem 源码GitEE 地址:https://gitee.com/Andy_Yi/drop-down-dome文章来源地址https://www.toymoban.com/news/detail-503433.html

到了这里,关于Unity Dropdown(可编辑,可输入)下拉选择框,带文本联想的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity中的【Dropdown(包括TMP_Dropdown)下拉框当只有一个下拉值时多次点击 OnValueChange事件无效】的改进方法

    Dropdown(包括TMP_Dropdown)下拉框当只有一个下拉值时,多次点击下拉框,并选择选项时, OnValueChange事件不响应 当下拉框值变化的时候,代表用户选择了新的值,于是执行对应逻辑 在当前情形之下,用户onValueChanged事件无法响应,因为value没有改变,那么如何补救呢? (1)如图

    2024年02月15日
    浏览(43)
  • 【unity3D】Dropdown组件 — 如何使用下拉菜单

    💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于游戏开发的学习笔记 🈶本篇是unity的Dropdown组件 介绍:Unity的Dropdown组件是一种UI控件,用于在下拉列表中显示选项或选项组。它允许用户从列表中选择一个选项,并可以在选择时触发特定的行为或事件。通

    2024年02月06日
    浏览(62)
  • Unity UGUI的Dropdown(下拉菜单)组件的介绍及使用

    Dropdown(下拉菜单)是Unity UGUI中的一个常用组件,用于在用户点击或选择时显示一个下拉菜单,提供多个选项供用户选择。 Dropdown组件由两部分组成:一个可点击的按钮和一个下拉菜单。当用户点击按钮时,下拉菜单会展开,显示所有选项。用户可以通过点击选项来进行选择

    2024年02月13日
    浏览(88)
  • 【Unity-UGUI控件全面解析】| Dropdown 下拉菜单组件详解

    🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN 🙉 🎄 学习专栏推荐:

    2024年02月06日
    浏览(59)
  • Unity3D邪门实现之GUI下拉菜单Dropdown设计无重复项

    ** Unity3D邪门实现系列为博主在实际开发过程中遇到一些需求,由于个人水平无法正经实现退而采用“歪道”实现同样的效果。** 该系列仅用于分享思路,若有错误或“多此一举”的地方,也请大家多多指正。 利用按钮和下拉菜单结合的形式,点击按钮显示下拉菜单,实现菜

    2024年02月02日
    浏览(41)
  • element-ui 下拉选择同时可输入

    element-ui在下拉选择的同时可以输入,看官方文档的时候,发现只有allow-create勉强符合需求,可以创建并选中选项中不存在的条目,但是不能满足输入失焦以后就是输入的值,搜了网上一圈,终于找到了答案~使用blur:

    2024年02月17日
    浏览(38)
  • uni-app下拉框 可实现输入下拉框 搜索+选择组合框功能

    插件示例地址

    2024年02月11日
    浏览(52)
  • 【vue+elementUI】输入框样式、选择器样式、树形选择器和下拉框样式修改

    写在style中不能加scoped,所以可以在最外层的div加一个专属名再写样式: A. 选择器的下拉弹框样式修改 el-select下拉项的的容器是div#app之外的,所以在scoped作用域内使用或/deep/修改样式无效,要想: 官网如是说:加 :popper-append-to-body=\\\"false\\\" 代码像普通样子写: B. 时间选择器的下

    2024年02月07日
    浏览(44)
  • Vant 弹出列表多选 输入框下拉选择 (可直接复制使用)

    项目要做移动端,部分功能迁移过程中发现,VantUI组件库不支持原Element组件库的部分功能,例如el-select 可以做到输入的同时下拉选择 下拉多选。 故需要手动改写,分享记录下代码。 效果图

    2024年02月11日
    浏览(63)
  • Bootstrap select2之下拉框可自定义输入和选择

    1. 引入css文件 2. 引入js文件 3. select标签引入class 我是在项目搜索框部分要加一个下拉框,本来甚至不需要上面那么多引入,都可以有一个下拉框,但是要求点击可以出现输入框自定义输入来筛选,然后想到了这个。但是想要利用表单来实现,因为不是一种表单,所以样式混乱

    2024年02月05日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包