Unity3D开发之遇上Dropdown
来源:互联网 发布:软件研发部 考核指标 编辑:程序博客网 时间:2024/05/28 18:44
unity应该是在5.0版本更新了新的UI组件,Dropdown。以前实现这个功能都需要自己来组装。现在集成化确实对开发者来说更快更方便。下面说下我在开发中遇到的跟Dropdown相关的问题。
unity的UGUI组件功能绑定更偏向于界面话,我们可以在编辑器中将函数绑定到组件中。但是当我们将canvas做成预制体之后,每次更新Canvas后,Canvas下的组件绑定的函数都会自动丢失。如果我们项目中很多场景共用一个Canvas,我们还需要一个个手动绑定函数,确实太糟心了。我们就可以使用程序来自动绑定。Button的和Dropdown的OnvalueChange函数绑定代码如下:
_DataWindow.Find("Button").GetComponent<Button>().onClick.AddListener(OnDataListButtonClick); SceneNameDropdown.onValueChanged.AddListener(x=> OnValueChange());这样我们就不需要去担忧函数的绑定丢失了。
项目中,我们还有一个如果Dropdown中的选择项是变化的,我们就需要根据程序来动态添加。
//重置Dropdown 根据脚本更新Dropdown SceneNameDropdown.ClearOptions(); for (int i = 0; i < Globle.SceneChineseNameList.Count; i++) { Dropdown.OptionData op = new Dropdown.OptionData(); op.text = Globle.SceneChineseNameList[i]; SceneNameDropdown.options.Add(op); }
还有,当有很多选择项时,比如几百个,我们不可能一个个去找,这时候我们需要做搜索功能。下面我说下搜索到后我们怎么在Dropdown下来菜单中显示搜索到的选择项。
在搜索函数中,我们通常会获取到一个返回值,即是该搜索对象在所有选项储存列表中的索引位置。即Index值。
private void OnSearch() { string _sceneName = sceneNameInput.text.Trim(); int _index= Globle.SceneChineseNameList.FindIndex(x=>x==_sceneName);_count = Globle.SceneChineseNameList.Count;print (_index);if (_index < 0)return;SceneNameDropdown.Show();Transform _DropdownList = SceneNameDropdown.transform.Find ("Dropdown List");if (!_DropdownList)return;Transform _content = _DropdownList.GetChild (0).GetChild (0);if(_index>7){float _y = _content.localPosition.y;if (_count - _index >= 6) _content.DOLocalMoveY (_y + 20 * _index, 0.1f);else _content.DOLocalMoveY (_y + 20 * (_index - 6), 0.1f);}_content.GetChild (_index+1).GetComponent<Selectable> ().Select (); }
这里的6不是固定的,我们要根据一个下拉列表能显示几个选项为准。还有20是每个元素在的宽度。这些都是要我们在实际项目中自己调试。
以上就是我在UI开发中遇到和Dropdown相关的问题。如果能帮助到你,很荣幸!
阅读全文
0 0
- Unity3D开发之遇上Dropdown
- Unity3D游戏开发之当游戏开发遇上Excel
- [Unity3D]Unity3D游戏开发之当仙剑奇侠传遇上Mecanim动画系统
- Ajax控件之DropDown
- CSS之dropdown
- bootstrap之dropdown
- Unity3D UGUI中的dropdown控件使用总结
- dropdown
- bootstrap之dropdown下拉菜单
- React基本组件之DropDown
- 当测试遇上开发
- Unity3D开发之Unity3D性能优化总结
- Unity3D游戏开发之邂逅Unity3D
- [Unity3D]Unity3D游戏开发之怪物AI
- [Unity3D]Unity3D 游戏开发之碰撞检测
- [Unity3D]Unity3D游戏开发之粒子系统
- [Unity3D]Unity3D游戏开发之怪物AI
- [Unity3D]Unity3D 游戏开发之碰撞检测
- 非局部神经网络(Non-local Neural Networks)
- xml文件中的一些符号转义
- linux下mycat安装使用
- php XSS攻击原理与防御
- 【Scikit-Learn 中文文档】最近邻
- Unity3D开发之遇上Dropdown
- Configure Linux kernel source
- 【Scikit-Learn 中文文档】十一:朴素贝叶斯
- @media多媒体类型
- 四种方式实现Flex页面跳转
- 查看网络图片的地址
- 正点原子精英版stm32f103zet6开发板,实惠开卖
- Java 9章 Thread 编程题
- python dict转json并保存文件