unity代码 获取dropdown_Unity(一)关于Unity Dropdown控件的使用心得
/*更新记录:20190508*/ui
说明:如下分日期记录并分享本身使用的经验this
快速上手开发请参考最新日期的更新spa
核心在于dropdown.value 知道咱们选择的索引是哪个Itemcode
2017功能记录对象
1:首先看一下控件组成blog

Lable和Arrow是用来显示初始化的文字和勾选项的,Lable会根据首选项的内容自动更改。继承
Template是Dropdown的模板样式,其中Background和Checkmark的图集资源咱们能够提早更改。索引
2:看一下Dropdown的属性面板游戏

Caption Text和Caption Image是做为下拉列表首选项的文字和图片显示,也是咱们每次选择后的内容,所以可代码调用获取事件
Item Text做为下拉列表中每一个item的文字显示,Item Image能够用来扩展模板增长内容
Value值会随着下拉列表选项的不一样而变化,dropdown.value
Options选项栏内:能够动态赋值给Item对象 Dropdown.OptionData
4:代码模块
说明:参考他人的代码,并作了修改
public string[] showText;//每一个Item下的Text,用来显示和修改
public Sprite[] sprite;//本身用来换每一个Item的背景显示
Dropdown dropDownItem;
List temoNames;
List sprite_list;
void Start()
{
dropDownItem = this.GetComponent();
temoNames = new List();
sprite_list = new List();
AddNames();
UpdateDropDownItem(temoNames);
}
void UpdateDropDownItem(List showNames)
{
dropDownItem.options.Clear();
Dropdown.OptionData temoData;
for (int i = 0; i
{
//给每个option选项赋值
temoData = new Dropdown.OptionData();
temoData.text = showNames[i];
temoData.image = sprite_list[i];
dropDownItem.options.Add(temoData);
}
//初始选项的显示
dropDownItem.captionText.text = showNames[0];
}
void AddNames()
{
for (int i = 0; i
{
temoNames.Add(showText[i]);
}
for (int i = 0; i
{
sprite_list.Add(sprite[i]);
}
}
这样能够在Templete里添加图,这样游戏内的看着好看的下拉列表就完成了。以下。。。好吧我认可丑

2019更新记录
需求:点击下拉列表的内容后就执行功能,相似Button事件。其实组件下方的OnValueChanged这个UnityEvent已是咱们要的功能了
下面用两种方法达到一样效果,推荐方法2
使用方法1:
a:首先建立一个脚本挂载在Dropdown组件下,继承ISelectHandler,把dropdown组件拖过来
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;
}
}
b:这样当咱们选择下拉列表对应Item,会触发相似button事件
使用方法2:
使用API自带的监听事件
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(Dropdown))]
public class Drop : MonoBehaviour
{
private Dropdown drop;
void Start()
{
drop = this.GetComponent();
drop.onValueChanged.AddListener(Change);
}
private void Change(int index)
{
Debug.Log(index);
switch (index)
{
case 0: break;
case 1: break;
default: break;
}
}
}
PS:欢迎交流问题留言。
更多推荐
所有评论(0)