Unity版本 2022.3.13f1
Dropdown下拉菜单可以快速创建大量选项
属性: | 功能: |
---|---|
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
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);
- }
- }
外部引用挂载
这里是实际图片的问题上下有空白换成不留空白的图就好了
点击效果