美文网首页
Unity UGUI系列八 Dropdown

Unity UGUI系列八 Dropdown

作者: 合肥黑 | 来源:发表于2021-11-23 10:09 被阅读0次

参考
【Unity3D-UGUI系列】(七)Dropdown 下拉菜单组件详解
https://docs.unity.cn/cn/2019.4/Manual/script-Dropdown.html

一、组件介绍
image.png

Create→UI→Dropdown创建完毕后,点击运行,展开下拉菜单后,能看到如上图中,多出来的红框部分。

  • Label 显示初始化的文字
  • Arrow 显示初始化的下拉箭头
  • Template Dropdown的模板样式
  • Item Background 每一个Item的背景图片
  • Item Checkmark 每一个Item的下拉框图片
  • Item Label 每一个Item的文字显示内容
  • Scrollbar 下拉框
1.组件属性
image.png
  • Template Dropdown的模板样式,生成的选项都是这个样式
  • Caption Text 下拉列表首选项的文字显示,可用代码调用获取
  • Caption Image 下拉列表首选项的图片显示,可用代码调用获取
  • Item Text 每个Item的文字显示
  • Item Image 每个Item的图片显示
  • Value 会随着Dropdown选择的选项不同而变化
  • Options 下拉菜单的选项列表
  • On Value Changed 添加监听事件,当Value值变化后,监听事件响应
二、代码调用

Dropdown 下拉菜单主要代码调用比较常见,下面就演示如何用代码构建Dropdown下拉菜单。

1.初始化文字内容
using UnityEngine;
using UnityEngine.UI;

public class TestDropdown : MonoBehaviour
{
    public Dropdown Drd_IPList;

    private void Start()
    {
        InitDropdown();
    }

    private void InitDropdown()
    {
        //清空默认节点
        Drd_IPList.options.Clear();

        //初始化
        Dropdown.OptionData op1 = new Dropdown.OptionData();
        op1.text = "220.110.1.10";
        Drd_IPList.options.Add(op1);

        Dropdown.OptionData op2 = new Dropdown.OptionData();
        op2.text = "220.110.1.11";
        Drd_IPList.options.Add(op2);

        Dropdown.OptionData op3 = new Dropdown.OptionData();
        op3.text = "220.110.1.12";
        Drd_IPList.options.Add(op3);
    }
}
2.同时初始化文字和图片
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class TestDropdown : MonoBehaviour
{
    public Dropdown Drd_IPList;
    public List<Sprite> m_Sprite;

    List<string> m_TextContent;
    Dropdown.OptionData m_TempData;

    private void Start()
    {
        AddTextContent();
        InitDropdown();
    }

    private void AddTextContent()
    {
        for (int i = 0; i < 3; i++)
        {
            m_TextContent.Add("220.110.1.1" + i);
        }
    }

    private void InitDropdown()
    {
        //清空默认节点
        Drd_IPList.options.Clear();

        //初始化
        for (int i = 0; i < 3; i++)
        {
            m_TempData = new Dropdown.OptionData();
            m_TempData.text = m_TextContent[i];
            m_TempData.image = m_Sprite[i];
            Drd_IPList.options.Add(m_TempData);
        }
        //初始选项的显示
        Drd_IPList.captionText.text = m_TextContent[0];
    }
}

3.增加节点
    //添加节点
    public void AddItem()
    {
        m_TempData = new Dropdown.OptionData();
        m_TempData.text = "新添加的节点";
        Drd_IPList.options.Add(m_TempData);
    }
4.删除节点
    //删除节点
    public void DelectItem()
    {
        //删除第一个节点
        m_TempData = Drd_IPList.options[0];
        Drd_IPList.options.Remove(m_TempData);
    }
5.使用Dropdown自带的监听事件
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(Dropdown))]
public class Drop : MonoBehaviour
{
    private Dropdown drop;
    void Start()
    {
        drop = this.GetComponent<Dropdown>();
        drop.onValueChanged.AddListener(Change);
    }
    private void Change(int index)
    {
        Debug.Log(index);       
        switch (index)
        {
            case 0: break;
            case 1: break;
            default: break;
        }
    }

6.在Dropdown面板中使用脚本监听
using UnityEngine;
using UnityEngine.UI;

public class TestDropdown : MonoBehaviour
{
    public Dropdown Drd_IPList;

    //事件监听
    public void EventListening()
    {
        switch (Drd_IPList.value)
        {
            case 0:
                Debug.Log(0);
                break;
            case 1:
                Debug.Log(1);
                break;
            case 2:
                Debug.Log(2);
                break;
            default:
                break;
        }
    }
}

Dropdown下面的On Value Changed增加方法:


image.png

相关文章

网友评论

      本文标题:Unity UGUI系列八 Dropdown

      本文链接:https://www.haomeiwen.com/subject/nuybtrtx.html