目录
1.3 drop的子物体构成:默认灰色的模板 template
1.3.1 默认灰色的模板 template 实际是生效的,只是不直接显示
3.2 分别在caption 和 template/item 下拉都增加一个image
3.3 分别把这2个image 挂载搭到 dropdown的 caption和item的image里
3.4 分别给 dropdown里的每个option 都选一个图片
1 下拉列表框 dropdown
1.1 创建dropdown
1.2 dropdown的子物体构成
- dropdown的子物体包括
- label //显示的文本内容,比如optionA
- arrow //下拉箭头
- 但是接下来有问题了: 那运行时的 optionB optionC 在哪设置的呢?
1.3 drop的子物体构成:默认灰色的模板 template
- dropdown的子物体还包括一个灰色的template
- 默认灰色的模板 template
1.3.1 默认灰色的模板 template 实际是生效的,只是不直接显示
template 包含内容
- viewpoint /content/ item / 选项的格式: background ,label
- scrollbar /sliding Area /handle等
- 下面是它全部展开的样子
1.3.2 其中 item下面是下拉选项的格式
选项的格式:
- background
- checkmark
- label
1.3.3 可以修改和新增
可以修改
并且可以新增项,使得模板/母版变多,这样模板控制的其他内容也跟着一起变换了
1.4 dropdown的属性
1.5 关联template
- 点击template 会跳转到,下面的子物体template
1.6 caption 和 item
见下文
1.7 其他属性
2 caption 和 item
2.1 caption
- caption 就是上面不展开,也显示的部分。
- 其实就是一个窗口
- 也就是默认显示部分
- 而可以认为caption,纯粹就是一个橱窗,没有内容。只有格式
- 所有的内容都是来自于 item itemlist
2.2 item
item就是下拉框的全部内容,包括现在显示在caption的那个
3 可修改模板template
3.1 可以先勾选生效后,看看里面内容
- 勾选后,template,直接把下拉框隐藏起来的内容,也直接展开展示了
- 下面应该是有个滚动区域
3.2 分别在caption 和 template/item 下拉都增加一个image
分别在caption 和 template/item 下拉都增加一个image
caption
- 下面新增image
- 决定标题这边的显示格式
items
- 下面新增image
- 决定下面下拉框的显示格式
3.3 分别把这2个image 挂载搭到 dropdown的 caption和item的image里
3.4 分别给 dropdown里的每个option 都选一个图片
3.5 继续隐藏template 然后测试
4 脚本
4.1 脚本需要挂载 dropdown本体下面
- 之前button的脚本,可以直接挂载canvas下面
- 这个脚本需要挂载 dropdown本体下面。否则可能找本体比较麻烦
4.2 脚本内容
//获取dropdown
Dropdown dropdown1 =GetComponent<Dropdown>();
//获取dropdown的内容
List<Dropdown.OptionData>options1= dropdown1.options;
//修改内容
options1.Add(new Dropdown.OptionData("Option D"));
dropdown1.options=options1;
4.2.1 取得控件
- 声明变量
- 取得控件
- dropdown1 =GetComponent<Dropdown>()
4.2.2 取得列表内容
- dropdown1.options
4.2.2 倒腾给变量
- 新建1个同类型变量,取得内容
- List<Dropdown.OptionData>options1
- options1=dropdown1.options
4.2.3 增加列表内容
- options1.Add()方法
- options1.Add(new Dropdown.OptionData("Option D"))
4.2.4
- //往回赋值
- dropdown1.options=options1
4.3 测试脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TestUI2 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
//获取dropdown
Dropdown dropdown1 =GetComponent<Dropdown>();
//获取dropdown的内容
List<Dropdown.OptionData>options1= dropdown1.options;
//修改内容
options1.Add(new Dropdown.OptionData("Option D"));
dropdown1.options=options1;
}
// Update is called once per frame
void Update()
{
}
}