Unity3D中DropdownItem使用详解

发表于2019-01-07
评论1 8.1k浏览
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);

这样就能在进入性别修改设置时,显示给定的当前用户性别的初始值。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引