/*更新记录:20190508*/ui

说明:如下分日期记录并分享本身使用的经验this

快速上手开发请参考最新日期的更新spa

核心在于dropdown.value 知道咱们选择的索引是哪个Itemcode

2017功能记录对象

1:首先看一下控件组成blog

53ea48ff4d07965dc73affad3020c9a8.png

Lable和Arrow是用来显示初始化的文字和勾选项的,Lable会根据首选项的内容自动更改。继承

Template是Dropdown的模板样式,其中Background和Checkmark的图集资源咱们能够提早更改。索引

2:看一下Dropdown的属性面板游戏

1dd025a404f3a947dfdd03c3ebd342f9.png

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里添加图,这样游戏内的看着好看的下拉列表就完成了。以下。。。好吧我认可丑

bc8a627a457aa75a20638b50c4ba5a53.png

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:欢迎交流问题留言。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐