Unity DropDown 组件 详解

Unity版本 2022.3.13f1

Dropdown下拉菜单可以快速创建大量选项

一、 Dropwon属性详解

属性:功能:
Interactable此组件是否接受输入?请参阅 Interactable
Transition确定控件以何种方式对用户操作进行可视化响应的属性。请参阅过渡选项
Navigation确定控件顺序的属性。请参阅导航选项
Template下拉列表的模板的矩形变换。请参阅以下说明。
Caption Text用于保存当前所选选项的文本的文本 (Text) 组件。(可选)
Caption Image用于保存当前所选选项的图像的图像 (Image) 组件。(可选)
Item Text用于保存列表项的文本的文本组件。(可选)
Item Image用于保存列表项的图像的图像组件。(可选)
Value当前所选选项的索引。0 代表第一个选项,1 代表第二个,依此类推。
Options可能选项的列表。可为每个选项指定一个文本字符串和一个图像。
On Value Changed用户单击了下拉列表中一个选项时调用的 UnityEvent

二、创建下拉菜单

 首先我们来先创建一个下拉菜单 再Unity 的Hierarchy面板右键选择UI---->Dropdown - TextMeshPro

当然也可以选择Legacy里面的Dropdown 这里我们选择Dropdown-TextMeshPro

 下面是Dropdown在Hierarchy面板上的层次结构

我们增加一个背景到DropDown下面作为背景展示

 然后将此背景和item的背景拖拽到Dropdown组件对应的位置上面如下图所示

三、下拉菜单组件代码调用

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;

public class Test : MonoBehaviour
{
    public TMP_Dropdown m_Dropdown;
    public List<Sprite> m_Sprites;
    public List<string> m_TextTip;
    public int m_CreateTemp;
    private TMP_Dropdown.OptionData m_OptionData;
    private int lastIndex = 0;
    void Start()
    {
        InitDorpDown();
    }

    private void InitDorpDown()
    {
        m_Dropdown.options.Clear();
        for (int i = 0; i < m_CreateTemp; i++)
        {
            m_OptionData = new TMP_Dropdown.OptionData();
            m_OptionData.text = m_TextTip[i];
            m_OptionData.image = m_Sprites[i];
            m_Dropdown.options.Add(m_OptionData);
        }

        //设置默认显示
        m_Dropdown.captionText.text = m_TextTip[0];
        m_Dropdown.captionImage.sprite = m_Sprites[0];

        m_Dropdown.onValueChanged.AddListener(OnChanged);
    }

    private void OnChanged(int index)
    {
        if (index == lastIndex) return;
        lastIndex = index;
        Debug.Log(index);
    }
}

 外部引用挂载

四、实际测试效果 

这里是实际图片的问题上下有空白换成不留空白的图就好了

点击效果

### 如何在 Unity 中使用 Dropdown 组件 #### 创建 Dropdown 组件 要在项目中创建 `Dropdown` 组件,在 Hierarchy 视图中选择 Create -> UI -> Dropdown 即可完成基本设置[^1]。 #### 初始化与配置 为了使自定义逻辑生效,需先确保场景内已存在 Canvas 和 EventSystem 对象;随后可通过 Inspector 面板调整新添加的 Dropdown 的属性,比如宽度、高度以及默认显示的文字等。另外,还需注意将脚本里提到的对象(如 myDropdown 或 resultText)正确关联至相应的组件实例上,这样才能保证后续操作顺利执行[^3]。 #### 动态更新选项列表 对于希望程序化控制下拉菜单内容的情况,则可以借助 C# 脚本来达成目标。下面给出了一段用于向现有 Dropdown 添加条目的简单代码片段: ```csharp using UnityEngine; using UnityEngine.UI; public class UpdateDropdown : MonoBehaviour { public Dropdown myDropdown; // 关联UI面板上的Dropdown控件 void Start() { List<string> items = new List<string>() { "Item 1", "Item 2", "Item 3" }; foreach (string item in items) { myDropdown.options.Add(new Dropdown.OptionData(item)); } } } ``` 此段代码展示了如何利用循环遍历字符串数组并将其作为新的 Option 加入到指定的 Dropdown 实例当中去[^2]。 #### 扩展应用案例 除了简单的增删改查外,实际开发过程中往往还需要考虑更多复杂的需求,例如响应用户交互事件来触发特定行为或是与其他界面元素协同工作等等。针对这些高级特性,官方文档提供了详尽说明,并附带大量实用的例子供开发者学习借鉴[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张不爱写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值