UGUI-- DropDown下拉列表控件

本文详细介绍了Unity中的UGUI DropDown组件,包括其组成部分、关键参数、代码控制方法以及监听事件的两种方式。了解如何设置Caption Text、Caption Image、Item Text、Item Image,以及如何通过Options设置选项列表,并通过代码控制和事件监听来实现下拉列表的功能。

1、DropDown是什么

下拉列表(下拉选单)组件,默认创建的DropDown由4组对象组成:

父对象——DropDown组件依附的对象,还有一个Image组件作为背景图

子对象——Label:当前选项描述;Arrow:右侧小箭头(就是个样式);Template:下拉列表选单(是一个ScrollBar)

2、DropDown参数

  • Template:关联下拉列表对象
  • Caption Text:关联显示当前选择内容的文本组件
  • Caption Image:关联显示当前选择内容的图片组件

注意:设置Caption Image需要在Dropdown下新建一个Image组件,将该组件拖入Caption Image,然后在Options中设置图片即可

  • Item Text:关联下拉列表选项用的文本控件
  • Item Image:关联下拉列表选项用的图片控件

注意:设置Item Image需要在Template的Item下新建一个Image组件(必须是Item的 子对象)并将其拖入Item Image,将该Image组件设置在下拉列表中的相应位置即可,然后在Options中设置图片,便可在下拉列表中看见相应的图片

  • Value:当前所选选项的索引值
  • Alpha Fada Speed:下拉列表窗口淡入淡出的速度,值越大速度越慢
  • Options:存在的选项列表

3、代码控制

Dropdown dd = this.GetComponent<Dropdown>();
print(dd.value);
// op
<think> 我们之前讨论了emWin中的下拉框(Combo Box)控件,现在用户询问“DROPDOWN控件是什么”,请注意在emWin中,DROPDOWN控件和COMBOBOX控件是两种不同的控件类型。根据用户提供的引用[1]中提到了DROPDOWN控件,以及添加新元素等功能,我们需要明确区分。 在emWin中: - **DROPDOWN控件**:通常是一个下拉列表,用户点击后展开一个列表选项,选择其中一个。它类似于组合框(Combo Box),但通常没有文本编辑区域,只能从预设选项中选择。在emWin库中,DROPDOWN控件由`DROPDOWN_`开头的函数管理。 - **COMBOBOX控件**:组合框,通常包含一个文本编辑区域和一个下拉列表,用户可以选择也可以输入。但在某些实现中,也可能被配置为仅下拉选择(不可编辑)。之前我们讨论的是COMBOBOX控件。 根据引用[1],它提到了DROPDOWN控件的使用: (1) 设置字体 (2) 启用自动滚动条 (3) 添加新元素 因此,针对用户的问题,我们应该介绍emWin中的DROPDOWN控件。 回答结构: 1. 定义:DROPDOWN控件是什么,在emWin中的作用。 2. 基本特性:包括外观、行为等。 3. 常用函数:列举几个关键函数(如创建、添加项、获取选择等),注意引用[1]中提到的添加元素、设置滚动条等。 4. 示例:一个简单的创建和使用的代码片段。 5. 与COMBOBOX的区别:简要说明,避免混淆。 注意:用户提供的引用[2]是关于UnityUGUI下拉列表,与emWin无关,因此不予考虑。 最后,生成相关问题。 </think> ### DROPDOWN控件介绍 在emWin图形库中,**DROPDOWN控件**是一种重要的交互组件,它允许用户从预定义选项列表中选择一个值。以下是其核心特性和功能: #### 1. **基本功能** - **展示形式**:默认显示当前选中项,点击时展开可滚动列表 - **交互方式**:用户通过点击/触摸选择列表项 - **内存效率**:特别适合资源受限的嵌入式系统 - **典型应用**:设置菜单、参数选择、模式切换等场景 #### 2. **关键特性** | 特性 | 说明 | |------|------| | **动态内容** | 支持运行时添加/删除选项 | | **滚动支持** | 自动生成滚动条处理长列表[^1] | | **字体控制** | 可独立设置列表项的显示字体[^1] | | **回调机制** | 支持选择事件处理函数 | #### 3. **核心操作函数 ```c /* 创建控件 */ DROPDOWN_Handle DROPDOWN_Create(int x0, int y0, int width, int height, WM_HWIN hParent); /* 添加选项 */ void DROPDOWN_AddString(DROPDOWN_Handle hObj, const char* s); /* 获取选中项索引 */ int DROPDOWN_GetSel(DROPDOWN_Handle hObj); /* 获取选中文本 */ void DROPDOWN_GetText(DROPDOWN_Handle hObj, char* pBuffer, int MaxLen); /* 清空列表 */ void DROPDOWN_DeleteAll(DROPDOWN_Handle hObj); ``` #### 4. **使用示例 ```c // 创建下拉框 DROPDOWN_Handle hDrop = DROPDOWN_Create(10, 10, 150, 30, WM_HBKWIN); // 添加选项 DROPDOWN_AddString(hDrop, "选项1"); DROPDOWN_AddString(hDrop, "选项2"); // 获取选中文本 char buf[32]; if(DROPDOWN_GetSel(hDrop) >= 0) { DROPDOWN_GetText(hDrop, buf, sizeof(buf)); GUI_DispStringAt(buf, 100, 50); // 显示选中项 } ``` #### 5. **与COMBOBOX的区别 | 特性 | DROPDOWN | COMBOBOX | |------|----------|----------| | 文本编辑 | ❌ 仅选择 | ✔️ 可编辑 | | 内存占用 | 较低 | 较高 | | 使用场景 | 固定选项选择 | 需自定义输入 | > ℹ️ 在emWin中,`DROPDOWN`是纯下拉选择器,而`COMBOBOX`包含文本编辑框组合功能。建议在只需要选择预定义项时使用`DROPDOWN`以节省资源[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值