Unity3D中DropdownItem使用详解
发表于2019-01-07
DropdownItem 下拉复选框,通常用于在某个对象的多个属性选项中,选中某个特定值。如:给游戏角色的某个属性添加增值,或者游戏角色的性别属性设置里,在打开性别设置时,通常需要先获取 当前角色的性别显示,用户才能进行修改设置。(有些没有性别修改设置的则可以忽略)
以下记录一下对DropdownItem 的使用笔记。
//dropdownItem 的options 选项,在Unity编辑器的的视图中 dropdown组件中已添加,在脚本就不用重新添加了
由Unity 编辑器中 添加Droption options :
单击 Dropdown 组件,在右边的检测面板中 找到 Options 修改里面的值。
选项值 (Item)组件 可自行修改 大小,在Template(模板)中 的 Item 修改 字体和组件宽度大小。
需求: 在游戏设置性别里用到 下拉框 (Dropdown) 组件,选择“男”或“女”,能获取初始值。(根据角色设置,获取默认选中状态)
问题: 在进入这个组件的设置界面时,能从游戏保存的数据,给定一个初始值。(没有设置初始值,该组件会默认选中第一选项,即?dropdownItem.value = 0;)
刚开始,在主观意识上是修改 dropdown 下的Label 来达到修改字符串的目的,但会出现各种小问题。
如:只是修改这个Dropdown组件下的 Label的话,并不是选中状态的文本 。与实际需求冲突
dropdownItem.value = 0; // 默认是第一选项
注意:如果有对 dropdownItem.OnValueChaged() 这个方法监听,在这里初始化赋值时会被调用,就是说在给定初始值时,会调用一次 这个方法里面的代码。(之前就是在这个方法里面,通过修改文本来 改变选中项,显然不能达到预期效果)
解决方法:
定义组件:
private Dropdown dropdownItem; // 下拉组件 private bool m_sex; // 游戏数据:角色性别
// 用法:在初始化的时候赋值 (省略了组件初始化 步骤)
dropdownItem.value = m_sex ? 0 : 1; // 根据游戏数据,给定初始值 显示 // 开始通过这种方式 修改,只是修改了选项里的文本而没有修改选中值,所以不能实现效果 //dropdownItem.options[dropdownItem.value].text = (m_sex) ? "男" : "女"; Debug.Log("\n 复选框 选中值为:" + dropdownItem.value); Debug.Log("\n 复选框 字符串为:" + dropdownItem.captionText.text);
这样就能在进入性别修改设置时,显示给定的当前用户性别的初始值。