一、前言

Dropdown下拉列表,控件还是很强大的,做UI的时候用的比较多,现在就将Dropdown使用中的一些经验总结起来,分享给大家了


二、参考资料

UGUI 中Dropdown控件的使用经验

Unity3D UGUI中的dropdown控件使用总结

Unity(一)关于Unity Dropdown控件的使用心得


三、正文

对于Dropdown控件的研究,我将分成这么几个部分:

  • 1、控件的组成以及属性面板介绍
  • 2、控件的初始化以及内容显示
  • 3、增加节点以及删除节点
  • 4、事件监听方式


1、控件的组成以及属性面板介绍

image

Label是显示初始化的文字 Arrow是显示初始化的下拉箭头 Template是Dropdown的模板样式 Item Background是每一个Item的背景图片 Item Checkmark是每一个Item的下拉框图片 Item Label是每一个Item的文字显示内容 Scrollbar是一个下拉框 其中Item Background和Item Checkmark的图集资源我们可以提前更改。

然后我们看一下Dropdown的属性面板: image

Caption Text和Caption Image是作为下拉列表首选项的文字和图片显示,也是我们每次选择后的内容,因此可代码调用获取

Item Text作为下拉列表中每个item的文字显示,Item Image可以用来扩展模板增加内容

Value值会随着下拉列表选项的不同而变化,dropdown.value

Options选项栏内:可以动态赋值给Item对象 Dropdown.OptionData


2、控件的初始化以及内容显示


初始化文字内容

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);
复制代码

image image


时初始化文字和图片

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];
复制代码

image

image


3、增加节点以及删除节点


添加节点

//添加节点
    public void AddItem()
        m_TempData = new Dropdown.OptionData();
        m_TempData.text = "新添加的节点";
        Drd_IPList.options.Add(m_TempData);
复制代码

image image image image


删除节点

//删除节点
    public void DelectItem()
        //删除第一个节点
        m_TempData = Drd_IPList.options[0];
        Drd_IPList.options.Remove(m_TempData);
复制代码

image image

删除后:

image


4、事件监听方式


使用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;
复制代码


使用ISelectHandler接口进行事件监听

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class Drop : MonoBehaviour,ISelectHandler
    public Dropdown drop;
    private int lastIndex;
    public void OnSelect(BaseEventData eventData)
        //避免点击下拉列表item和dropdown重复调用
        if (drop.value == lastIndex) return;
        //处理逻辑
        Debug.Log("OnSelect=" + drop.value);
        lastIndex = drop.value;
复制代码


在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;
复制代码

将脚本挂在Main Camera上面(当然,任何物体都可以),然后将Dropdown拖入卡槽中:

image

将Dropdown下面的On Value Changed增加方法 image

运行起来,可以看到控制台打印的信息 image



SAP UI5 应用 SimpleForm 控件 ResponsiveGridLayout 布局的工作原理深入剖析试读版
SAP UI5 应用 SimpleForm 控件 ResponsiveGridLayout 布局的工作原理深入剖析试读版
Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏! 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Vblegend_2013/article/details/83447420          首先先得瑟一下,有关WPF中不规则窗体与WindowsFormsHost控件不兼容的问题,网上给出的解决方案不能满足所有的情况,是有特定条件的,比如  WPF中不规则窗体与WebBrowser控件的兼容问题解决办法。
原文:WPF ScrollViewer(滚动条) 自定义样式表制作 (改良+美化) 注释直接写在代码里了   不太理解意思的 可以先去看看我上一篇  WPF ScrollViewer(滚动条)  自定义样式表制作 图文并茂 滚动条因为要在触摸屏上用  所以我设计的很宽 宽度可以自己改  把宽度变量...